mybatis缓存机制总结

mybatis缓存机制

mybatis中存在一级缓存二级缓存,默认情况下一级缓存是开启的,而且不能关闭。

一级缓存——sqlSession级别

第一次发送一个SQL查询语句,查询结果将写入到sqlSession的一级缓存中,缓存使用的数据结构是map(HashMap)。
如果第二次同一个sqlSession发出相同的sql请求时,就会从缓存中查询并取出查询结果。但是如果在两次查询期间出现commit操作对数据进行了修改,那么此时的缓存将会自动全部清空,下次再次查询时会去数据库中进行查询,并将其再次写入到缓存中去

注意:
一级缓存最多缓存1024条SQL;
mybatis默认一级缓存开启,不需要进行配置。

二级缓存——mapper级别

二级缓存的范围是mapper级别的(即同一个mapper命名空间),mapper以命名空间为单位创建缓存,使用的数据结构同样是map。
mybatis的二级缓存是通过CacheExecutor实现的。CacheExecutor是Executor的代理对象。所有的查询操作,在CacheExecutor中都会先匹配缓存中是否存在,如果不存在再去数据库查询

注意:

  1. 二级缓存是跨SqlSession的缓存,对于mapper级别的缓存不同的SqlSession是可以进行共享的。
  2. 二级缓存的使用需要如下的配置:
    (1)Mybatis全局配置中启用二级缓存配置。
    (2)在对应的Mapper.xml中配置cache节点
    (3)在对应的select查询节点中添加useCache=true

全局配置

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

mapper.xml配置

<!-- 开启当前mapper的namespace下的二级缓存 -->  
<cache eviction="LRU" flushInterval="60000" size="512" readOnly="true"/>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值