1.动态Sql-拼接where条件
需求:如果用户的查询条件会实时变化,则选用动态where条件查询
规则:要求对象中不为null的属性 充当where条件
2.动态Sql拼接set条件
需求说明:如果修改数据时,影虎传递的参数为null时,则应该采用动态sql的格式
规则:如果set标签中有多余的逗号,
3.动态Sql-万能标签 trim
需求:如果动态sql中需要去除其他的关键字,
4.分支结构用法
choose-when-otherwise
sql中采用分支结构语法,如果有一个条件成立,则另外的条件无效了
5.ResultMap介绍(重点) 多表查询时
万能的映射规则
手动添加映射关系
6.驼峰映射规则
mapUnderscoreToCamelCase | 是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。 | true | false |
7.注解模式
8.多表查询
一对一封装
association javaType
一对多封装
collection ofType
内连接 一般查询交集 隐式和显式连接方式
外连接 得到所有的数据 left join 和right join
子查询
懒加载机制
只有子查询才可以懒加载
使用场景: 适合海量数据查询时只查询其中的个别数据时使用
MyBatis缓存机制
一级缓存
同一个SqlSession 获取的Mapper接口执行多次查询,sql只查询一次
MyBatis默认开启一级缓存 ,但是多线程请求就是有几条线程就执行几次
二级缓存
不同的用户执行了多次,缓存有效果,sql只执行一次
多个用户查询同一个业务逻辑可以实现共享数据
默认关闭
启用二级缓存
在映射文件中添加二级缓存标签
<cache></cache>
正确关闭查询: sqlSession.close
二级缓存注解写法 (一般不用)
@CacheNamespace 写在接口上
@Select 在方法上
当前接口开启二级缓存+配合注解的查询
@acheNamespace和<cache>只能二选一