java笔记——mybatisy缓存

一 myBatis框架中缓存分类:

 一级缓存:

      [会话缓存]。在当前用户访问数据库期间,所有的查询结果都会自动
      保存起来。用户可以使用SqlSession从一级缓存中进行读取。
      而其他用户的SqlSession是不能读取当前用户的一级缓存
       一级缓存自动开启,开发人员是不能关闭一级缓存



 二级缓存:

     【全局缓存】,
      1.二级缓存针对某一个表来设置的共享缓存
      2.如果一个SqlSession对象将要被销毁时,MyBatis框架
        自动将这个SqlSession中与当前表关联的数据存放到这个共享缓存中.
      3.那么此时其他SqlSession如果需要得到相同的数据,就可以到共享缓存中
        读取

      4.由于二级缓存对于服务端内存消耗较大,因此MyBatis框架是不会主动
       开发二级缓存,需要开发人员手动开启二级。

二 一级缓存失效原因:

  1.同一个用户,使用两个SqlSession,是看不到一级缓存工作。

  2.在一个SqlSession,使用查询条件不同,也会导致一级缓存失效

               select * from dept where deptno=10    结果1
               select * from dept where deptno=20    结果2

  3.在一个SqlSession使用相同查询条件此时在查询之间进行数据修改操作导致一级缓存刷新(清空)

  4.在一个SqlSession使用相同查询条件此时手动刷新缓存时导致一级缓存失败

三 与MyBatis中【一级缓存】和【二级缓存】关联的属性

  1.全句变量:核心配置文件

            <settings>
                  <setting   name="cacheEnabled"  value="true"/>
           </settings>

           1)cacheEnabled[默认值就是true]: 表示开启二级缓存
           2)cacheEnabled=false,         关闭二级缓存。一级缓存依然存在

 2.useCache: mapper.xml 会在<select>出现属性

             <select id="findDeptByNo"  resultType="dept" useCache="true">

           1)useCache只出现在<select>
           2)useCache默认值就是true
           3)userCache设置false时,对于一级缓存没有任何影响
                                   此时第一个SqlSession与当前查询语句
                                   关联的结果,在第一个SqlSession关闭时
                                   是不会放到二级缓存中。


 3.flushCache:mapper.xml

          1)flushCache会出现【添加,更新,删除,查询】标签 
          2)flushCache属性决定当前SQL执行完毕后,是否会刷新(清空)缓存
          3)flushCache在【添加,更新,删除】标签中,默认值true  
           (清空一级缓存数据/清空二级缓存对应的mapper.xml所有数据)
          4)flushCache在【添加,更新,删除】标签中,设置为false
            (清空一级缓存数据/不会清空二级缓存数据) 

          5)flushCache也可以在【查询标签出现】,默认值false
             (一级缓存和二级缓存都可以使用)
          6)flushCache在查询标签中设置为true。(查询结果不会保存到一级缓存和二级缓存)

4.sqlSession.clearCache(): 只会清空当前会话的一级缓存。不会影响数据保存到二级缓存

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值