MyBatis笔记(五)——查询缓存

MyBatis的缓存分为一级缓存与二阶缓存,缓存的存在能够大大减少数据库使用的压力

其中一级缓存是基于SqlSession的缓存,二阶缓存是基于mapper的缓存。


一级缓存


    一级缓存基于sqlSession,mybatis创建sqlsession对象的时候,该对象内部存在Hashmap数据结构,保存着缓存的数据。不同的sqlsession是互不影响的。

    二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

    下图是其工作原理:

     

  二级缓存

 下图为二级缓存工作原理

  

    可以看到,二级缓存是跨sqlsession的,当sqlsession1首先执行UserMapper的查询操作后,如果sqlsession2也执行同样的查询操作,那么在usermapper的缓存中会给sqlsession2缓存数据,而不是重新查询,但是当sqlsession3对缓存区域数据做了改动或者提交了Usermapper,那么就会清空usermapper的缓存,另外两个mapper的namespace如果相同,这两个mapper执行sql查询到数据将存在相同的二级缓存区域中。

      二级缓存的开启需要在除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值