一、mybatis缓存机制的简介
mybatis提供了缓存机制减轻数据库压力,提高数据库性能。mybatis的缓存分为两级:一级缓存、二级缓存。
二、mybatis一级缓存
1、一级缓存简介
基于PerpetualCache 的 HashMap本地缓存,是Session会话级别的缓存,默认就会被使用
2、一级缓存的有效期
- 没有执行过session.clearCache()清理缓存;
- 没有执行过增删改的操作(这些操作都会清理缓存)
- session对象已经close()过了就不可能用了
- 不是同一个Session对象
3、原理和性能
- 一级缓存通过简单Map集合来实现,并没有对Map集合的大小、容量进行限制;
- 一级缓存粗粒度的缓存,没有办法去精确控制缓存中的数据是否存在过长,是否过期,以及更新缓存数据;
- 多个SqlSession对象缓存中的数据无法共享。
三、mybatis二级缓存
1、二级缓存的简介
namespace级别缓存(一个xml文件对应一个二级缓存),二级缓存需要手动开启
2、开启二级缓存
2.1、在mybatis的配置文件中开启二级缓存
<settings>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
2.2、在mapper文件中配置cache标签
<!-- 开启二级缓存 -->
<cache />