Mybatis的缓存机制

Mybatis的一级缓存:

mybatis会在表示会话的sqlsession对象中建立一个简单的缓存,将每次查询到的结果缓存起来(缓存到内存中),当在同一个sqlSession执行相同的sql查询语句会从缓存中获取数据,不再去数据库查询,从而提高查询效率。
需要注意的是:如果sqlsession执行了DML(增删改)操作并且提交到数据库时,Mybatis则会清空sqlsession里的一级缓存,这样做的目的是为了保证缓存中是当前最新的数据,避免出现脏读现象。
当一个sqlsession结束的时候该sqlsession中的一级缓存也就不存在了,Mybatis默认开启一级缓存不需任何配置。

缓存机制:

MyBatis的缓存机制是基于id进行缓存的,也就是说,MyBatis使用HashMap缓存数据时,是使用对象的id作为key,对象作为vaue保存的.

Mybatis的二级缓存:

二级缓存是mapper级别的缓存,多个sqlsession去操作同一个mapper的
sql语句,多个sqlsession去操作数据库得到的数据存在二级缓存区域,多个sqlsession可以共用二级缓存,二级缓存是跨sqlsession的。
二级缓存是多个sqlsession共享的,其作用域是mapper的同一个namespace,不同的sqlsession执行同一个namespace下的sql语句且向sql中传递的参数也相同即最终执行相同的sql语句,第一次执行完毕会将数据库中查询到的数据写到缓存,第二次会从缓存中获取数据,将不再从数据库查询,从而提高查询效率,Mybatis默认没有开启二级缓存,需要在setting全局中配置开启二级缓存(在MyBatis配置文件(mybatis-config.xml)中开启二级缓存)。
如果有缓存就不再从数据库中获取,大大提高了查询速度。

缓存机制(减轻数据库的访问压力),基于mybatis的二级缓存机制,在实例没有进行集群处理时可以使用Map来进行数据的缓存,当服务进行集群处理时,我们就要用第三方缓存(Rides),来进行数据的缓存。

1、在yml中配置 cache.enabled:true
2、在mapper.xml中配置 cache-ref标签 并且在要缓存的类上面添注解@CacheNamespace(implementation = MybatisRedisCache.class , flushInterval = 3000l , eviction = LruCache.class)
3、实现cach接口(mybatis缓存规范)中的put 与 get 方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值