一、MyBatis框架介绍
(1)MyBatis的前身是iBatis,本是Apache的一个开源的项目
(2)MyBatis是一个数据持久层(ORM)框架,把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现
(3)MyBatis小巧,简单易学
(4)优点
1、与JDBC相比,减少了50%以上的代码量
2、最简单的持久化框架,小巧并简单易学
3、SQL代码从程序代码中彻底分离,可重用
4、提供XML标签,支持编写动态SQL
(5)缺点
1、SQL语句编写工作量大,对开发人员有一定要求
2、数据库移植性差
二、MyBatis环境搭建
(1)下载MyBatis的jar包
1、跟其他开源框架一样,我们需要下载对应的jar包后才能使用
2、MyBatis的jar包下载地址:https://github.com/mybatis/mybatis-3/releases
3、在线中文帮助文档:http://www.mybatis.org/mybatis-3/zh/index.html
(2)项目搭建
1、打开Eclipse,创建一个java项目
2、解压下载好的最新版mybatis.zip压缩包,(我这里最新版的是mybatis-3.4.5.zip),找到里面的mybatis-3.4.5.jar
3、在java项目中新建一个lib文件夹,把mybatis-3.4.5.jar复制到lib文件夹中,并右键mybatis-3.4.5.jar,选择Bulid Path中的Add to Build Path
4、因为MyBatis是ORM框架,所以少不了数据库,把mysql-connector-java-5.1.44-bin.jar复制到lib文件夹中,右键mysql-connector-java-5.1.44-bin.jar,选择Bulid Path中的Add to Build Path (没有数据库驱动jar包的朋友,这里有链接,可以自行下载 https://pan.baidu.com/s/1GXobITxEY-SfsWOxRa5yNw )
三、使用MyBatis
(1)在java项目中新建一个config 资源文件夹Source Folder,用于存放各种配置文件
(2)mybatis-config.xml 的配置
1、在config资源文件夹下创建一个 mybatis-config.xml
2、核心配置文件 mybatis-config.xml 配置 (有些配置看不懂没关系,后面会详细的跟大家讲)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引入 数据库连接所需四个参数的 db.properties参数配置文件 -->
<properties resource="db.properties"></properties>
<settings>
<!-- 这个配置使全局的映射器启用或禁用缓存-->
<setting name="cacheEnabled" value="true" />
<setting name="logImpl" value="LOG4J" />
<!-- PARTIAL 只会自动映射简单, 没有嵌套的结果。 FULL 会自动映射任意复杂的结果(嵌套的或其他情况) -->
<setting name="autoMappingBehavior" value="FULL" />
</settings>
<!-- 设置别名 类型别名是为 Java 类型设置一个短的名字,可以方便我们引用某个类 -->
<typeAliases>
<package name="com.mybatis.bean"/>
</typeAliases>
<!-- 工作环境,默认是开发者模式 -->
<environments default="development">
<!-- 配制工作环境为开发者模式,可配制多个 -->
<environment id="development">
<!-- 采用jdbc的事务管理 -->
<transactionManager type="JDBC" />
<!-- 配置数据源 -->
<dataSource type="POOLED">
<!-- 数据库驱动 -->
<property name="driver" value="${driver}" />
<!-- 数据库路径 -->
<property name="url" value="${url}" />
<!-- 数据库的用户名 -->
<property name="username" value="${username}" />
<!-- 数据库的密码 -->
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- mapping 文件路径配置 -->
<mappers>
<package name="com.mybatis.dao"/>
</mappers>
</configuration>
(3)db.properties参数配置文件配置
1、在config资源文件夹下,新建一个File文件,名称命名为db.properties
2、参数配置如下
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名?useSSL=true&allowMultiQueries=true (数据库名表示你要用哪个数据库,这里我用的数据库是smbms, 即jdbc:mysql://localhost:3306/smbms?useSSL=true&allowMultiQueries=true)
username=root (数据库用户名)
password=你自己数据库的密码 (数据库密码)
3、如下图所示 (这里我的数据库是没有密码的,所以可以不写)
(4)创建实体类,实体类的字段名要与数据库的字段名一致
(5)Sql映射文件配置
1、在config资源文件夹下,创建一个与你dao层同名的包,例如:你在src资源文件夹下dao层的包名叫com.mybatis.dao,那么你在config资源文件夹下的包名也要叫com.mybatis.dao
2、创建一个与你在src资源文件夹dao层下同接口类名的xml文件,例如:你在src资源文件夹dao层下的接口类名叫UserMapper.java,那么你在config资源文件夹dao层的映射文件也要叫UserMapper.xml (注意在src资源文件夹dao层下的接口类名的后缀是.java,而config资源文件夹dao层下的映射文件后缀为.xml,只是名称相同,后缀不相同)
3、映射文件的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace的值为你src资源文件夹dao层下UserMapper的全路径 -->
<mapper namespace="com.mybatis.dao.UserMapper">
<!-- mapper中写你的sql语句 -->
<!-- sql语句中的id,要与你src资源文件夹dao层下UserMapper接口中声明的抽象方法名一致 -->
<select id="selectUserById" parameterType="java.lang.Integer" resultMap="userMap">
select * from smbms_user where id = #{id}
</select>
<insert id="addUser" parameterType="User">
insert into smbms_user(id,userCode,userName,userPassword) values(null,#{userCode},#{userName},#{userPassword})
</insert>
<update id="updateUser" parameterType="User">
update smbms_user set userPassword = #{userPassword} where id = #{id}
</update>
<delete id="deleteUser" parameterType="_int">
delete from smbms_user where id = #{id};
</delete>
</mapper>