1.SQL映射文件(...Mapper.xml)
SQL映射文件的几个顶级元素(按照定义顺序)
用于区分不同的mapper,全局唯一
绑定dao接口,及面向接口编程
cache-配置给定命名空间的缓存
cache-ref-从其他命名空间应用缓存配置
resultMap-用来描述数据库结果集和对象的对应关系
sql-可用重用的SQL块,也可以被其他语句引用
insert-映射插入语句
update-映射更新语句
delete-映射删除语句
select-映射查询语句
2.SQL映射文件的select的返回结果类型的映射可以使用resultMap和resultType,但不能同时使用。
resultType 直接表示返回类型包括 基础数据类型 和 复杂数据类型。
resultMap 则是对外部resultMap定义的引用,对外部resultMap的Id,表示返回结果映射到哪一个resultMap上
它的应用场景一般是 数据库字段信息与对象属性不一致 或者需要做复杂的联合查询以便自由控制映射结果。
3.关于MyBatis的SQL语句参数入参,对于基础数据类型的参数数据,使用@param注解实现参数入参;复杂数据类型的参数直接入参即可。
4.resultMap的association 和 collection 可以实现高级结果映射。
association属性有:
- javaType:完整Java类名或者别名。若映射到一个JavaBean,则MyBatis通常会自行检测到其类型;
若映射到一个HashMap,则应该明确指定JavaType,来确保所需行为。
- property:映射数据库列的实体对象的属性。
association的子元素有:
- id
- result
property:映射数据库列的实体对象的属性。
column:数据库列名或别名
collection的属性有:
- ofType:完整Java类名或者别名,及集合所包含的类型。
- property:映射数据库列的实体对象的属性。
5.MyBatis缓存
- 一级缓存:是基于PerpetualCache(MyBatis自带)的HashMap本地缓存,作用范围为session域内,但session flush 或者 close 之后,该session中所有的cache就会被清空。
- 二级缓存:就是global caching,它超出session 范围之外,可以被所有SqlSession 共享,开启它只需要在MyBatis的核心配置文件(mybatis-config.xml)settings中设置即可
- 一级缓存缓存的是SQL语句,二级缓存缓存的是结果对象。