• MyBatis(六)缓存机制 之 缓存的相关属性设置


    缓存相关设置

      1、全局 setting 的 cacheEnable:

        cacheEnable:是否开启二级缓存

    <!-- 是否开启二级缓存 -->
    <setting name="cacheEnabled" value="true"/>
    

        取值:

    true:开启二级缓存
    false:关闭缓存(关闭二级缓存)(一级缓存一直可用)
    

        配置二级缓存的开关,一级缓存一直是打开的。

      2、select 标签的 useCache="true" 属性

        每个 select 标签都有 useCache="true",配置这个 select 是否使用二级缓存,一级缓存一直是使用的

        取值:

    true:开启二级缓存(一级二级缓存都使用)
    false:会把当前 select 语句的二级缓存关闭掉,不使用缓存(一级缓存依然使用,二级缓存不使用)
    

        默认为 true,当前 select 语句使用二级缓存。

        代码示例:

         <!-- public Emp getEmpByEid(String eid); -->
         <select id="getEmpByEid" resultType="Emp" useCache="true">
             select eid, ename, age, sex from emp
             where eid = #{eid}
         </select>

      3、增删改查标签的 flushCache 属性

        (1)增删改标签

          每个增删改上面都有 flushCache 属性,且该属性默认为 true,一级二级缓存都会清除

          取值:

    true:一级二级都会清除【默认值】
    false:不清除缓存
    

           正是因为增删改标签上面该属性设置为了 true,所以在进行增删改操作完成后,一级缓存会清除。

        (2)查询标签

          每个 select 标签上面的 flushCache 属性默认为 false,不清除缓存

          所以进行查询后,第二次会从缓存中获取。

          如果 flushCache="true" 每次查询之前都会清空缓存,缓存是没有被使用的。

      4、SqlSession 的 clearCache() 

    sqlSession.clearCache(); 只是清除当前session的一级缓存
    

      

      5、全局 setting 的 localCacheScope 属性

        在 MyBatis3.3 版本以后,可以设置一个 localCacheScope 属性,该属性表示本地缓存作用域(即设置一级缓存的作用域)

        取值:

    SESSION:当前会话的所有数据保存在会话缓存中,使用一级缓存
    STATEMENT:可以禁用一级缓存(几乎不使用)
    

         在全局配置中进行设置:

    <setting name="localCacheScope" value="STATEMENT"/>
    

         一般都不会进行缓存作用域的设置。

     

  • 相关阅读:
    CSP2019-S2总结
    #期望dp#洛谷 6835 [Cnoi2020]线形生物
    #树状数组,概率,离散,双指针#洛谷 6834 [Cnoi2020]梦原
    #容斥,倍数,排列组合#洛谷 2714 四元组统计
    #莫队,bitset#洛谷 3674 小清新人渣的本愿
    #贪心#洛谷 3173 [HAOI2009]巧克力
    #树链剖分,LCA#洛谷 3398 仓鼠找sugar
    #树状数组,哈希#洛谷 6687 论如何玩转 Excel 表格
    小甲鱼Python第八讲课后习题
    小甲鱼Python第七讲课后习题
  • 原文地址:https://www.cnblogs.com/niujifei/p/15244830.html
Copyright © 2020-2023  润新知