Mybatis的一级缓存和二级缓存执行顺序

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jinhaijing/article/details/84257981

1、先判断二级缓存是否开启,如果没开启,再判断一级缓存是否开启,如果没开启,直接查数据库

2、如果一级缓存关闭,即使二级缓存开启也没有数据,因为二级缓存的数据从一级缓存获取

3、一般不会关闭一级缓存

4、二级缓存默认不开启

5、如果二级缓存关闭,直接判断一级缓存是否有数据,如果没有就查数据库

6、如果二级缓存开启,先判断二级缓存有没有数据,如果有就直接返回;如果没有,就查询一级缓存,如果有就返回,没有就查询数据库;

 

==》综上:先查二级缓存,再查一级缓存,再查数据库;即使在一个sqlSession中,也会先查二级缓存;一个namespace中的查询更是如此;

 

如下一个小栗子说明即使在一个sqlSession中,也会先查二级缓存:

二级缓存开启的情况下:

同一个sqlSession中执行两次查询:

结果:

说明:两次打印中,第二次还去查了二级缓存;说明当二级缓存开启的情况下,即使是一个sqlSession中的缓存,都会先去查一下二级缓存,再返回查一级缓存; 所以说,缓存执行顺序是:二级缓存-->一级缓存-->数据库

展开阅读全文

没有更多推荐了,返回首页