一、XML映射器概念
映射文件是MyBatis中的又一重要组件,它包含了各类SQL语句、参数、结果集、映射规则等信息。使用映射文件,开发人员不仅可以灵活编写SQL语句以满足不同场景的需要,还可将SQL语句从代码中分离,进而能够通过POJO对象完成对数据库的数据读写。
下面图片是映射文件的配置。
二、映射文件元素
1、<mapper>元素
<mapper>元素是映射文件的根元素,包含了一些映射文件元素(如SQL语句、类型映射等),该元素只有一个namespace属性(命名空间)。
namespace属性作用:用于区分不同的mapper,全局唯一。 绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的全限定方法名查找到对应的mapper映射文件,来执行相应SQL语句,此时namespace的命名必须跟接口同名。
在定义接口时需要注意以下几个点:
接口类的全限定名与映射文件的namespace值一致
接口方法名与增删改查元素id属性值一致
接口方法参数与parameterType属性指定类型一致
接口方法返回值与resultType/resultMap指定映射类型一致
如下图所示:
编写测试类
2、<select>元素
<select>元素主要用于映射查询语句,它包含了SQL语句、参数类型、返回值类型等信息。下图为<select>元素语句示例。
id:指定该映射关系在当前命名空间的唯一标识符。
parameterType:执行SQL语句传入参数类型。
resultType:返回查询结果数据类型。
3、<insert>元素
<insert>元素主要用于映射SQL的新增语句,包含了SQL语句、参数类型等信息。由于数据库的新增等操作均返回的影响行数,因此该元素的resultType属性值为int,默认情况下可以省略不写。
下图为<insert>元素语句示例。
id:指定该映射关系在当前命名空间的唯一标识符。
parameterType:执行SQL语句传入参数类型。
flushCache:默认为true,只要语句被调用,就会清空本地和二级缓存。
statementType:可选 STATEMENT,PREPARED 或 CALLABLE。
useGeneratedKeys:设置为true时,取出由数据库内部生成的主键值。
keyProperty:指定能够唯一识别对象的属性名,多个使用逗号分隔。
keyColumn:设置生成键值在表中的列名。当主键列不是表中的第一列的时候,必须设置的此属性。
4、<update>元素
<update>元素主要用于映射SQL的修改语句,包含了SQL语句、参数类型等信息。另外该元素还可作为DDL语句的执行元素。
下图为<select>元素语句示例。
由于<update>元素所拥有的属性与<insert>元素类似,因此这里就不再做具体介绍。
5、<delete>元素
<delete>元素主要用于映射SQL的删除语句,包含了SQL语句、参数类型等信息。在实际开发当中不建议直接将数据删除,应使用标识列(如is_deleted)来执行逻辑删除操作。
下图为<select>元素语句示例。
由于<delete>元素所拥有的属性与<insert>元素类似,因此这里就不再做具体介绍。
6、<sql>元素
<sql>元素主要用来定义可重用的SQL代码片段,可以使用<include>元素将其嵌入到其它元素的SQL语句当中。
三、实例操作
以下面这道题为例子,实战演示MyBatis映射文件操作流程。因为增删改操作与查找操作类似,这里就举例查找操作进行示例。
下面为相关数据的数据库表。
操作步骤:
1、创建Provider实体类并生成setter、getter方法
2、创建ProviderDao接口
这里冒红是因为后面没有写映射文件,写了映射文件后就不会标红了。
3、配置映射文件
4、编写测试类
6、运行并输出数据