1:MyBatis基本要素
核心对象
SqlSessionFactoryBuilder 生命周期:方法体内,作用域:方法体内
SqlSessionFactory 生命周期:从应用服务启动开始一直到应用服务停止—application,作用域:整个应用内
SqlSession 生命周期:一次请求的有效期 作用域:一次请求的有效期内
通过SqlSession实例直接运行映射的SQL语句
基于mapper接口的方式执行SQL语句
系统核心配置文件 properties typeAliases
2:SQL映射的XML文件:
MyBatis 真正的强大在于映射语句,专注于SQL,功能强大,
SQL映射的配置却是相当简单
SQL映射文件的几个顶级元素(按照定义的顺序)
mapper - namespace cache - 配置给定命名空间的缓存
cache-ref – 从其他命名空间引用缓存配置
resultMap –用来描述数据库结果集和对象的对应关系
sql – 可以重用的SQL块,也可以被其他语句引用
insert – 映射插入语句
update – 映射更新语句
delete – 映射删除语句
select – 映射查询语句
3:mapper
namespace:命名空间
namespace和子元素的id联合保证唯一,区别不同的mapper
绑定DAO接口 namespace的命名必须跟某个接口同名 接口中的方法与映射文件中SQL语句id一一对应
4:select
id :命名空间中唯一的标识符
接口中的方法与映射文件中的SQL语句id一一对应
parameter Type :传入SQL语句的参数类型
基础数据类型:
int,String,Date等
只能传入一个
通过#{参数名}获取值
复杂数据类型:
java实体类,Map类
通过#{属性名}或者#{map的keyName}即可获取传入值
resultype:SQL语句返回值类型的完整类名或别名
5:resultType和resultMap的区别:
resultType :直接表示返回类型 基本数据类型 复杂数据类型
resultMap :对外部resultMap的引用
resultMap自动映射匹配前提:字段名与属性名一致
resultMap的自动映射级别-autoMappingBehavior
PARTIAL(默认):自动匹配所有
应用场景: 数据库字段信息与对象属性不一致
复杂的联合查询,自由控制映射结果
二者不能同时存在,本质上都是Map数据结构
6:insert添加
id
parameterType
<insert id="add" parameterType="User">
</insert>
insert、update、delete元素均没有resultType属性
7:update修改
id
parameterType
8:delete删除
id
parameterType
9:resultMap
association
复杂的类型关联,一对一
内部嵌套
映射一个嵌套JavaBean属性
属性
property:映射数据库列的实体对象的属性
javaType:完整Java类名或者别名
resultMap:引用外部resultMap
子元素
id
result:
property:映射数据库列的实体对象的属性
column:数据库列名或者别名
10:
resultMap自动映射(autoMappingBehavior)的三个匹配级别
NONE 禁止自动匹配
PARTIAL(默认) 自动匹配所有属性,内部嵌套除外
FULL 自动匹配所有
11:MyBatis缓存
一级缓存
二级缓存
二级缓存的配置
MyBatis的全局cache配置
在Mapper XML文件中设置缓存,默认情况下是没有开启缓存的
在Mapper XML文件配置支持cache后,如果需要对个别查询进行调整,可以单独设置cache