关于mybatis 一级缓存和二级缓存的那点事儿

关于mybatis 一级缓存和二级缓存的那点事儿


mybatis是当下非常流行的一种持久层框架,其功能也是非常强大,今天我们就来介绍一下mybatis中缓存那点事儿。
sqlSession
sqlSession可以简单的认为是一个数据库连接,通过它本身就可以实现增删改查的功能。但是大多数的使用方式(也是推荐的使用方式)还是使用Mapper接口,当然了即便使用Mapper接口,底层的实现还是会执行sqlSession的接口方法来调用SQL语句。
一级缓存
一级缓存是sqlSession级别的缓存
Mybatis默认是开启以及缓存的。而sqlSession级别的缓存就是说你在同一个sqlSession中对同样的数据执行了2次查询,那么第二次将不会查询数据库,而是从缓存中获取。这样操作的好处在于

  • 减少了读取数据库的次数
  • 数据可重复读(以牺牲数据准确性为前提)

二级缓存
mapper级别的缓存
相比一级缓存,二级缓存的范围更大。一级缓存是基于sqlSession的,而二级缓存是基于Mapper接口的namespace的,也就是说相同namespace的Mapper中的查询,多个sqlSession可以公用缓存
也就是说同一个mapper下在没有flushCache的情况下可以直接调用二级缓存而不是数据库的数据,但是跨mapper文件的情况下,再mapper1查询一张表的数据后,mapper2对相同数据的查询即使没经过flushCache也是会调用数据库的。需要注意的是,二级缓存默认是关闭的,若要开启,需要手动配置。
在mybatis-config.xml文件中增加如下配置

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

或者直接在mapper.xml中增加

<!-- 开启二级缓存 -->
<cache></cache>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值