mybatis缓存
1、一级缓存
配置:
我们来看看如何使用MyBatis一级缓存。开发者只需在MyBatis的配置文件中,添加如下语句,就可以使用一级缓存。共有两个选项,SESSION
或者STATEMENT
,默认是SESSION
级别,即在一个MyBatis会话中执行的所有语句,都会共享这一个缓存。一种是STATEMENT
级别,可以理解为缓存只对当前执行的这一个Statement
有效。
mybatis全局配置文件定义,默认开启 session级别
<setting name="localCacheScope" value="SESSION"/>
作用范围:当前sqlSession中(一个会话中)
总结
- MyBatis一级缓存的生命周期和SqlSession一致。
- MyBatis一级缓存内部设计简单,只是一个没有容量限定的HashMap,在缓存的功能性上有所欠缺。
- MyBatis的一级缓存最大范围是SqlSession内部,有多个SqlSession或者分布式的环境下,数据库写操作会引起脏数据,建议设定缓存级别为Statement。
2、二级缓存
配置
要正确的使用二级缓存,mybatis全局配置文件需完成如下配置的。默认关闭
<setting name="cacheEnabled" value="true"/>
作用范围:sqlSession间共享(同一个mapper接口)
总结:建议关闭 使用成熟的分布式缓存如redis
参考:
https://tech.meituan.com/2018/01/19/mybatis-cache.html