一、一级缓存
- 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。
- 在同一个SqlSession下的同一条查询语句(参数也不变)会从缓存返回结果;更新语句(update、insert、delete)会刷新缓存。
二、二级缓存
- 二级缓存是基于 mapper文件的namespace的,也就是说多个sqlSession可以共享一个mapper中的二级缓存区域,并且如果两个mapper的namespace相同,即使是两个mapper,那么这两个mapper中执行sql查询到的数据也将存在相同的二级缓存区域中。
- 二级缓存基于namespace。如果一个user表,有两个不同namespace的Mapper都对其进行查询和更改,则互相不可见,容易读到过期数据。
https://www.jianshu.com/p/2be932206c59
https://blog.youkuaiyun.com/weixin_39312465/article/details/86624486