一分钟区分一级和二级Mybatis缓存

本文介绍了Mybatis的一级和二级缓存机制。一级缓存默认开启,基于sqlsession,而二级缓存需要手动开启,基于mapper。一级缓存生命周期短,受增删改操作影响,二级缓存则被多个sqlsession共享。然而,Mybatis的缓存机制存在数据不一致和脏读问题,因此建议在实际使用中谨慎考虑是否启用。
摘要由CSDN通过智能技术生成

image.png

  • 一级缓存指的就是sqlsession,在sqlsession中有一个数据区域,是map结构,这个区域就是一级缓存区域。

    • 一级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。
    • 一级缓存中的value,就是查询出的结果对象。
  • 二级缓存指的就是同一个namespace下的mapper

    • 二级缓存中,也有一个map结构。具体的结构和一级缓存是一样的,key和value的结构都相同。
    • 但是生命周期比一级缓存的生命周期要长。

一级缓存是默认使用的。 二级缓存需要手动开启。

一级缓存 (sqlsession缓存)

image.png

第一次查询会去缓存中去查,如果查不到,就查DB然后加入缓存。但是要是有增删改操作并且提交了,就会清空一级缓存。

一级缓存里面是一个hashmap:localCache 这个Map,key为 将Statement Id + Offset + Limmit + Sql + Params 等5个元素组合成一个CacheKey对象,并重写了他们的equals方法&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值