每次连接数据池,会消耗一定的资源,缓存就可以临时保存一些读取信息,减少访问频次。
缓存的内存也不是无线多的,有一定的容量需要及时清理,清理的方案有4种
1 一级缓存
- 默认开启的,存在于一个sqlSession的区间段内,不需要手动设置
- 但是为了代码规范,需要在xml文档说明
案例一:查询时候的缓存
案例二:增删改操作,改变了原来的数据,会刷新缓存!
案例三:手动清理缓存 sqlsession.clearCache()
2 二级缓存
理解
使用手册
还可以自己设置更详细的参数
如果查询得太频繁了,可以设置useCache=false
(只有查询有useCache)
案例一
无二级缓存
创建两个SqlSession
有二级缓存
只要开启了二级缓存,在同一个Mapper下都可以用
常见问题
如果二级缓存不带参数
3 缓存原理
人设计Mybatis缓存时候的思路:缓存顺序
- 第一次查数据库,之后放在一级缓存内
- 一级缓存关闭后,暂时存到二级缓存内
Mybatis钢框架调用缓存的原理:缓存顺序
- 先查看二级缓存是否有资源
- 再查看一级缓存是否有资源
- 最后再从数据库里检查资源
4 自定义缓存 ehCache
2022年,缓存大多使用redis,这个了解即可
5 SUM
完结?(差一次对Mybatis的SqlSession原理梳理)
对于缓存想要进移步另一篇理解
单击同一专栏下深入理解缓存原理文章.