MyBatis的SQL映射文件
Posted bokeboke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis的SQL映射文件相关的知识,希望对你有一定的参考价值。
1.使用MyBatis实现条件查询
(1)sql映射文件
- mapper:映射文件的根元素节点,只有一个属性namespace,其作用如下:
<1>用于区分不同的mapper,全局唯一
<2>绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL语句。因此namespace的命名必须要跟接口同名。
- cache:配置给定命名空间的缓存
- cache-ref:从其他命名空间引用缓存配置
- resultMap:用来描述数据库结果集和对象的对应关系
- sql:可以重用的SQL块,也可以被其他语句引用
- insert:映射插入语句
- update:映射更新语句
- delete:映射删除语句
- select:映射查询语句
2.使用resultMap完成查询结果的展现
(1)resultType
resultType直接表示返回类型,包括基础数据类型和复杂数据类型
(2)resultMap
resultMap则是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到哪一个resultMap上。它的应用场景一般是:数据库字段信息与对象属性不一致或者需要做复杂的联合查询以便自由控制映射结果
(3)resultType和resultMap的关联
在MyBatis进行查询映射的时候,其实查询出来的每个字段值都放在一个对应的Map里面,其中键是字段名,值则是其对应的值。当select元素提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋值给resultType所指定的对象对应的属性(即调用对应的对象里的属性的setter方法进行填充)。
resultType属性和resultMap属性绝对不能同时存在
3.使用@Param注解实现多参数入参
4.使用resultMap实现高级结果映射
(4.1)association
association仅处理一对一的关联关系
(4.2)collection
5.resultMap自动映射级别和MyBatis缓存
(1)MyBatis对resultMap自动映射的三个匹配级别:
- NONE:禁止自动匹配
- PARTIAL(默认):自动匹配所有属性,有内部嵌套(association、collection)除外
- FULL:自动匹配所有
以上是关于MyBatis的SQL映射文件的主要内容,如果未能解决你的问题,请参考以下文章