# 1、mybatis的缓存--减少和数据库的交互降低数据库压力
# 2、缓存机制原理
第一次sql查询的时候将结果缓存(保存内存中),下一次sql查询与第一次相同,如果缓存有数据直接从缓存取。
# 3、
## 一级缓存 SqlSession
注:使用 SqlSession.clearCache( ) 方法可以强制清除一级缓存
## 二级缓存 Mapper
cacheEnabled
开启二级缓存之后: 二级缓存>一级缓存>数据库
1、缓存是以namespace为单位的,不同namespace下的操作互不影响。
2、insert,update,delete操作会清空所在namespace下的全部缓存。
3、通常使用MyBatis Generator 生成的代码中,都是各个表独立的,每个表都有自己的namespace。
4、多表操作一定不要使用二级缓存,因为多表操作进行更新操作,一定会产生脏数据。
mybatis缓存导致的Oracle按序列自增的id重复
<!--
flushCache: 默认FALSE。不会清空本地缓存和二级缓存
useCache: 默认TRUE。本条语句结果进行二级缓存
-->
<select id="save" parameterType="XXXXXEO" flushCache="true" useCache="false">
……
</select>
参考博客:
https://www.cnblogs.com/zkatr/p/15349387.html#:~:text=Mybatis 缓存机制原理是将第一次从数据库 SQL,查询的结果数据保存到缓存(内存中),当下一次 SQL 查询和第一次相同,如果缓存中有数据则直接获取,而不用再从数据库获取,从而减少数据库访问频率,大大提升数据库性能。
https://www.cnblogs.com/taiyanhong/p/6999366.html