Mybatis框架3
程序员文章站
2022-03-10 17:09:49
...
回顾:
1. 多参数查询(@Param,对象)
2. 获取保存主键( select last_insert_id )
3. 动态SQL( if, choose when otherwise, where,set ,trim,foreach )
4. 多表操作(一对一,一对多)
- 嵌套查询(重点)
嵌套查询 : 将多个表联合查询的SQL语句,拆分为多次查询(单表查询)
1.1 一对一
案例 : 查询所有账户以及每个账户的所属用户
1.1.1 区分操作主体
操作主体:账户
1.1.2 完成多次查询
SQL语句
1.1.3 配置映射文件
在操作主体的映射文件上配置
1.2 一对多
案例: 查询所有用户以及每个用户下的所有账户
1.2.1 区分操作主体
操作主体: 用户
1.2.2 完成多次查询
1.2.3 配置映射文件
- 加载策略
加载策略: 查询关联对象的查询时间
立即加载: 查询对象之后,立即查询关联对象 (默认配置)
延迟加载(懒加载): 关联对象,什么时候用,什么时候查
2.1 局部配置
配置到SQL映射文件的关联关系配置上 (association, collection)
fetchType:
eager
lazy
2.2 全局配置
在核心配置文件中配置全局加载开关
制定触发延迟加载的方法
2.3 内部原理
内部原理: 基于子类的动态代理( 生成的动态代理对象是被代理对象的子类)
被代理对象不能使用final修饰
3. 缓存机制
3.1 一级缓存
一级缓存 : SqlSession级别的缓存.随着SqlSession的创建而创建,随着SqlSession的关闭而销毁.程序自带的,不可卸载
3.1.1 验证一级缓存
3.2 二级缓存
二级缓存: SqlSessionFactory级别的缓存( Mapper级别的缓存).
3.2.1 二级缓存的配置
- 对象需要实现序列化接口
- 开启全局二级缓存的支持
. - 在映射文件中声明要使用二级缓存
- 将数据保存到二级缓存中,需要进行sqlSession提交或者关闭
- 核心配置(重点)
核心配置文件的配置项:sqlMapConfig
4.1 Properties
在核心配置文件中,使用外部的properties配置文件
4.2 typeAlias
typeAlias : 设置对象别名
4.3 Mappers
加载sql映射文件
4.4 Settings
全局配置
4.5 事务提交
4.6 使用自定义的数据库连接池
4.6.1 坐标
4.6.2 自定义工厂
4.6.3 配置
5. 注解编程
作用: 替换xml的SQL映射文件
5.1 使用规则
1. 注解配置到dao接口的方法上
2. 注解中配置sql语句,sql语句的语法和xml映射文件中的语法一致
3. 注解 (@Insert, @Update,@Delete,@Select)
5.2 常规注解(重点)
5.2.1 搭建环境
在核心配置文件中的mappers中加入dao接口的全类名或者以package的形式设置dao接口的包名
5.2.2 使用
5.3 映射关系
@Results : 声明映射关系配置
id : 当前映射配置的唯一标识
value : 接收@Result数组
@Result :
配置属性和字段的映射关系
property
column
id : boolean参数,表明是否配置主键映射关系(true|false)
默认值:false
@ResultMap : 引用其他已经存在的映射关系配置
value=其他Results中id
Result和results
resultMap
5.4 多表注解(了解)
只支持嵌套查询
5.4.1 一对一
5.4.2 一对多
面试问题
- 延迟加载策略
- 缓存机制
作业:
1.练习 ,2.预习spring第一天