一、前言
Mybatis的开发有两种方式:
- 注解
- XML
使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。
事实上,在实际开发中,使用XML开发的情况十分常见。例如在某个多条件查询功能实现中,用户可能会根据id、时间、名字等选项进行条件查询(用户可以只用id一个选项来进行条件查询,也可能多个选项组合进行条件查询),那么这种情况下,使用注解的方式就显得力不从心了,而使用XML来配置映射语句则有得天独厚的优势。那xml具体如何使用呢?
二、XML配置文件规范
在Mybatis中使用XML映射文件方式开发,需要符合一定的规范:
-
XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
-
XML映射文件的namespace属性为Mapper接口全限定名一致
-
XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。
以下面的项目demo为例,图1中可以看到XML映射文件mapper.xml与Mapper接口是同包同名的,
从图三可以看出XML映射文件的namespace属性为Mapper接口全限定名一致,且其中sql语句的id与Mapper接口中的方法名list()一致,并保持返回类型resultType一致。
三、XML配置文件实现
第1步:创建XML映射文件
在resource目录下,注意与mapper接口同包同名
第2步:编写XML映射文件
xml映射文件中的dtd约束,直接从mybatis官网复制即可
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
</mapper>
配置1:XML映射文件的namespace属性为Mapper接口全限定名
配置2:XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nju.software.mapper.EmpMapper">
<!--查询操作-->
<select id="list" resultType="com.nju.software.pojo.Emp">
select * from emp
<where>
<if test="name!=null">
and name like concat('%',#{name},'%')
</if>
<if test="gender!=null">
and gender = #{gender}
</if>
<if test="begin!=null and end!=null">
and entrydate between #{begin} and #{end}
</if>
</where>
order by update_time desc
</select>
</mapper>
四、MybatisX的使用
MybatisX是一款基于IDEA的快速开发Mybatis的插件,为效率而生。
MybatisX的安装:
可以通过MybatisX快速定位,点击代码左边的小鸟即可,这个对于大型项目(接口特别多的情况下)非常有用,亲测简单好用。
五、总结
使用Mybatis的注解,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句。