MyBatis:二级缓存

  • 二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存。
  • 基于namespace级别的缓存,一个名称空间,对应一个二级缓存。
  • 工作机制:
    • 一个会话查询一个数据,这个数据就会被放在当前会话的一级缓存中;
    • 如果当前会话关闭了,这个会话对应的一级缓存就没了;但是我们想要的是会话关闭了,一级缓存中的数据被保存到二级缓存中;
    • 新的绘画查询信息,就可以从二级缓存中获取内容;
    • 不同的mapper查处的数据会放在自己对应的缓存(map)中

步骤:

  1. config.xml中开启全局缓存,虽然默认就是开启的

    1
    2
    <!--        显式地开启全局缓存-->
    <setting name="cacheEnabled" value="true"/>
  2. 在SQL映射文件中添加标签并配置参数,也可以不配置,只写一个<cache/>

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <cache
    <!-- 清除策略FIFO -->
    eviction="FIFO"
    <!-- 每隔60秒刷新 -->
    flushInterval="60000"
    <!-- 最多可以存储结果对象或列表的 512 个引用 -->
    size="512"
    <!-- 返回的对象被认为是只读的 -->
    readOnly="true"/>