1.下载需要的jar文件
MyBatis的官方网站https://blog.mybatis.org/,可以下载到最新的Release版本的MyBatis,其他的Release版本的MYBatis的jar文件;
2.部署jar文件
具体操作步骤如下.
(1)将下载后的mybatis-3.2.2.jar,MySQL-connector-java-5.1.0-bin.jar(MySQL数据驱动jar文件)以及log4j-1.2.17.jar(负责日志输出的jar文件)复制到建好的WEB-INF下的lib目录中;
(2)在lib文件夹选择需要导入的架包,单机右键选择"Build Path">"Add Build Path"添加架包;
3.创建MyBatis的核心配置文件configuration.xml
MyBatis核心配置文件主要用于配置数据库连接和MyBatis运行时所需的各种特性,包含了设置和影响MyBatis行为的属性.
为了方便管理以后各框架集成所需的配置文件,故需在项目工程下新建Source Folder类型的resource目录,并在次目下添加MyBatis的核心配置文件,默认文件名为”configuration.xml”.但需要注意的是,为了方便在框架集成时更好区分各个配置文件,我们一般将其命名为”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>
<!-- 引入database.properties文件 -->
<properties resource="database.properties"/>
<!-- 配置mybatis的log为LOG4J -->
<settings>
<setting name="logImpl" value="LOG4J" />
<setting name="autoMappingBehavior" value="NONE"/>
</settings>
<typeAliases>
<package name="cn.smbms.pojo"/>
</typeAliases>
<!-- 配置mybatis多套运行环境 -->
<environments default="development">
<environment id="development">
<!-- 配置事务管理,采用JDBC的事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- POOLED:mybatis自带的数据源,JNDI:基于Tomcat的数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<mapper resource="cn/smbms/service/user/UserMapper.xml"/>
</mappers>
</configuration>
mybatis-config.xml文件的几个常用元素的作用如下
(1) configuration:配置文件的根元素节点
(2) properties:通过resource属性从外部指定的properties属性文件(database.properties),该属性文件描述数据库连接的相关配置(数据库驱动,连接数据库的url,数据库用户名,数据库密码),位置也是在/resource目录下;
(3) setting:设置MyBatis运行中的一些行为,比如此处设置MyBatis的log日志实现为log4j实现日志功能
(4) environments:配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,该元素节点下可以配置多个environment子元素节点,但是必须指定其中一个默认运行环境(通过default指定);
(5) environment:配置MyBatis的一套运行环境,需指定运行环境ID,事务管理,数据源配置等相关信息.
(6) Mappers:作用是告诉MyBatis去哪里找到SQL映射文件;
(7) Mapper:mappers的子元素节点,具体指定SQL映射文件的路径,其中resource属性的值表述了SQL映射文件的路径(类资源路径).
必须注意的是,mybatis-confi.xml文件的元素节点是有一定顺序的,节点位置若不按顺序排位,那么XML文件会报错;
4.创建持久化类(POJO)和SQL映射文件
public class User {
private Integer id; //id
private String userCode; //用户编码
private String userName; //用户名称
private String userPassword; //用户密码
private Integer gender; //性别
private Date birthday; //出生日期
private String phone; //电话
private String address; //地址
private Integer userRole; //用户角色
private Integer createdBy; //创建者
private Date creationDate; //创建时间
private Integer modifyBy; //更新者
private Date modifyDate; //更新时间
private Integer age;//年龄
private String userRoleName; //用户角色名称
//省略get和set方法
}
接下来,继续进行SQL映射文件的创建,完成POJO(实体类)的映射,该文件也是一个xml文件,命名为UserMapper.xml如下代码所示.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="cn.smbms.dao.user.UserMapper">
<select id="getUserList" resultMap="userList">
SELECT u.*,roleName FROM smbms_user u,smbms_role r WHERE u.userrole=r.id
<if test="userRole!=null">
and u.userRole=#{userRole}
</if>
<if test="userName!=null and userName!=''">
and u.userName like CONCAT('%',#{userName},'%')
</if>
order by creationDate DESC LIMIT #{from},#{pageSize}
</select>
<select id="getUserListByMap" resultType="User" parameterType="Map">
select * from smbms_user
where userName like CONCAT('%',#{uName},'%')
and userRole=#{uRole}
</select>
<!-- 登陆 -->
<select id="login" resultType="User">
</select>
</mapper>
SQL映射文件一般用于相应的POJO,所以一般都是采用与相应的POJO的名称+Mapper的规则来命名.当然mapper也属于dao层的操作,应该放置在dao包下,并根据业务功能进行分包配置,如cn.smbms.dao.Usermapper.xml
上面的UserMapper.xml定义了SQL语句,其中各元素的含义如下.
Mapper:映射文件的根元素节点,只有一个属性namespace;
Namespace:用于区分不同的mapper,全局唯一.
Select,表示查询语句,是MyBatis最常用的元素之一,常用的属性如下;
Id属性:该命名空间下唯一标识符
ResultType:表示SQL语句返回值类型,此处通过SQL语句返回的是int数据类型;
5.创建测试类
在工程中加入Jinit4,创建测试类,进行功能测试,并在后台打印出用户表的记录数,具体实现步骤如下:
(1)读取全局配置文件:mybatis-config.xml如下代码所示;
InputStream is =Resources.getResourceAsStream("configuration.xml");
(2)创建SqlSessionFactory对象,此对象可以完成对配置文件的读取,如下代码:
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
(3)创建SqlSession对象,此对象的作用是调用mapper文件进行数据操作,需要注意的是必须先把mapper文件引入到mybatis-config.xml中才能生效,如以下代码所示:
int count =0 ;
SqlSession sqlSession=null;
sqlSession=factory.openSession();
//mybatis通过mapper文件的namespace的子元素和id来找到相应的SQL,从而进行查询操作
count=sqlSession.selectOne("cn.smbms.dao.user.UserMapper.count");
logger.debug("UserMapperTest count-->"+count);
(4)关闭SqlSession对象,如下代码所示:
sqlSession.close()