目录
SQL映射文件
1、主要元素
mapper:SQL映射文件的根元素,有一个namespace属性
cache:配置给定命名空间的缓存
cache-ref:从其他命名空间引用缓存配置
resultMap:用来描述数据库结果集和对象的对应关系
sql:可以重用的SQL块,也可以被其他语句引用
inserrt:映射插入语句
delete:映射删除语句
update:映射更新语句
select:映射查询语句
2、参数传递
参数传递有三种方法
1、将查询条件封装成Java对象作为入参
2、将查询条件封装成Map对象作为入参
3、使用@Param注解实现多参数入参
3、结果映射
使用resultMap元素定义结果映射,对名称不同地结果集字段和实体类属性进行映射
resultMap元素包含以下属性
1、id:resultMap的唯一标识
2、type:映射的结果类型
resultMap元素的子元素
1、id:指定和数据表主键字段对应的标识属性
2、result:指定和数据表主键字段对应的标识属性
3、association:映射 "多对一" 或 "一对一" 关系
属性:
property:用来映射查询结果子集的实体属性
javaType:完整Java类名或者别名
resultMap:引用外部resultMap
4、collection:映射 "一对多" 关系
属性:
property:实体类中用来映射查询结果子集的集合属性
ofType:集合中元素的类型,完整Java类名或者别名
resultMap:引用外部resultMap
resultType与resultMap
resultType:
1、直接表示返回类型
2、适用于比较简单直接的数据封装场景
resultMap:
1、是对外部resultMap的引用
2、能够处理结果集字段名与实体类属性名不一致、或者需要对连接查询结果使用嵌套映射等较为复杂的问题
二者本质上都是Map,但不能同时使用!
MyBatis自动映射
1、自动映射的前提:属性名与字段名一致
2、自动映射级别:autoMappingBehavior
<settings>
<setting name="autoMappingBehavior"
value="[ NONE | PARTIAL | FULL ]" />
</settings>
4、增删改
增删改(insert、update、delete)这类操作通常返回影响行数,
insert、update、delete元素均没有resultType/resultMap属性
5、MyBatis缓存
一级缓存
二级缓存
配置:
MyBatis的全局cache配置
<settings>
<setting name="cacheEnabled" value="true" />
</settings>
在SQL映射文件中设置缓存,默认情况下是没有开启缓存的
<cache eviction="FIFO" flushInterval="60000"
size="512" readOnly="true" />
在SQL映射文件配置支持cache后,如果需要对个别查询进行调整,可以单独设置
<select id="selectAll" resultType="SysUser"
useCache="true">