参考:
![0](https://img2022.cnblogs.com/blog/1527450/202202/1527450-20220224103035246-1388901735.png)
一级缓存loaclCache HashMap的简单封装 sqlsession级别
CacheKey相等:
1.mappedStatment的id
2.指定查询结果集的范围
3.查询所用的sql
4.sql的实际参数
更新操作会清空一级缓存
二级缓存namespace级别,一个mapper映射文件用一个缓存
因此,mapperA中使用关联查询,别的mapper中修改了,此时mapperA不会修改缓存,
解决办法:xml文件使用cache-ref配置
一级二级缓存都是基于本地的,分布式环境必然出现脏读。二级缓存可以实现cache接口集中管理缓存。
除非对性能要求极高,不建议使用缓存