SQL映射文件
SQL映射MyBatis框架最具特色,功能强大且使用简单。
一.SQL映射文件的几个顶级元素及介绍
mapper: SQL 映射文件的根元素。只有一个属性namespace,用于区分不同的mapper,必须全局唯一。
cache:为给定命名空间配置缓存。
cache-ref:引用其他命名空间中的缓存配置。
resultMap:用来描述查询结果集中的字段和Java 实体类属性的对应关系。
sql:定义可重用的SQL语句块,可以仕具他佑可队TI用,旋高菊与和维护SQL语句的效率。
insert:映射insert 语句。
update:映射update语句。
delete:映射delete语句。
select:映射select 语句。
二.SQL映射文件的参数传递
直接传递:使用@Param注解为参数命名
使用JavaBean:使用#{属性名}绑定属性
使用Map:使用#{key}绑定映射规则
三.MyBatis框架的结果映射
1.使用resultMap元素自定义结果映射
select元素通过resultMap 属性引用resultMap元素定义的映射规则。
resultMap元素包含以下属性。
id:映射规则集的唯一标识,可以被select元素的resultMap属性引用。
type:映射的结果类型,这里指定封装成SysUser 实例。
resultMap元素包含以下子元素。
id:指定和数据表主键字段对应的标识属性。设置此项可以提升 MyBatis框架的性能.特别是应用缓存和嵌套结果映射的时候。
result:指定结果集字段和实体类属性的映射关系。
2.嵌套结果映射
1.association元素
association元素用来处理“has-one”类型的关系。
association元素主要属性
property:实体类中用来映射查询结果子集的属性。
javaType: pronertv指定的属性的数据米刑可N使田Iava完全限定类名或别名。如果 property指定的属性是一个JavaBean叫ll MvRatis框架涵尝能够白行检测出甘类型,如果property 指定的是一个HashMap,则应该通讨iavaTvne属性明确指定甘数据类型,以确保所需行为。
association元素包含如下子元素。
id。
result。
它们在association中的含义和用法与在resultMap元素中相同。
2.collection元素
collection元素和association元素作用非常类似,只不过表达的是“一对多”关系,即实体类内部嵌套的是一个集合类型的属性。
collection元素的常用属性
property:实体类中用来映射查询结果子集的集合属性。
ofType: property 指定的集合属性中的元素的数据类型,可以使用Java完全限定类名或别名。collection元素的子元素与association元素及resultMap元素的基本一致。
3.result与resultMap
本质上都是Map,不能同时使用
4.resultMap自动映射行为
resultMap自动映射的三种行为
NONE:禁用自动映射,仅为于工职射的偶性赋但。
PARTIAL:这是默认行为.对于没有嵌套映射的resultMap使用自动映射;而对于有嵌套映射的resultMap不使用自动映射,仅为手工映射的属性赋值。
FULL:全部使用自动映射,即使有嵌套映射的resultMap也会使用自动映射。
四.MyBatis缓存
一级缓存范围:SqlSession
二级缓存范围:SqlSessionFactory