Mybatis-缓存
一次查询结果,给它暂存在一个可以直接取到的地方! --> 内存
我们再次查询相同数据的时候,就直接走缓存,不用再走数据库了
- Mybatis可以非常方便地定制缓存和配置缓存
- 默认定义了两级缓存:一级缓存和二级缓存
- 一级缓存默认开启,SqlSession级别的缓存
- 二级缓存需要手动开启和配置,namespace级别的缓存
开启二级缓存:
-
在核心配置文件中:(开启全局缓存)
<settings> <!--显示开启缓存--> <setting name="cacheEnabled" value="true"/> </settings>
其实是默认开启的,为了提高代码的可读性,显示开启缓存;
-
在Mapper.xml中配置二级缓存:
<mapper namespace="com.kangzhu.dao.BlogMapper"> <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/> </mapper>
缓存原理:
同一个Mapper.xml:
- 创建SqlSession对象ss1
- 此对象从数据库查询数据
- 实现一级缓存
- 实现二级缓存(如果开启二级缓存)
- 此对象进行相同的查询,直接从缓存中拿去
- 另一个SqlSession对象ss2进行相同的查询
- 需要从数据中查询(如果没有开启)
- 从二级缓存中拿去(如果开启二级缓存)
- ss1关闭,ss1的一级缓存清除
- ss2进行相同的查询
- 需要从数据中查询(如果没有开启)
- 从二级缓存中拿去(如果开启二级缓存)