Mybatis的缓存机制

Mybatis提供了一级和二级缓存,一级缓存是会话级别,二级缓存是命名空间级别。一级缓存默认开启且不可控,关闭SqlSession或执行增删改会清除。二级缓存需手动开启,返回结果需可序列化,增删改操作后也会清除相应缓存。由于缓存可能与数据库不一致,文章不推荐依赖Mybatis的缓存来确保数据一致性。
摘要由CSDN通过智能技术生成

Mybatis的缓存机制

  Mybatis内置一级缓存与二级缓存,优先查询二级缓存,未命中时查询一级缓存,仍未命中将从数据库中查询

一级缓存

  • 又称:会话缓存(默认开启,通常人为不可控)
  • 仅当同一个SqlSession、同一个Mapper、执行同样的SQL、SQL中的参数值相同时有效
  • 当关闭SqlSession、调用SqlSession的clearCache()、此Mapper执行了任何增删改操作后,自动清除缓存数据

二级缓存

  • 又称:namespace缓存(默认全局开启,各namespace未开启)
  • 在XML中添加cache标签将开启当前XML的二级缓存,此XML中所有查询默认开启缓存,在上配置useCache="false"可单独关闭。
  • 开启了二级缓存的查询功能,返回结果类型必须实现Serializable接口。
  • 开启了二级缓存的查询功能,当SQL中的参数值相同时,缓存有效。(无论是否同一个SqlSession)
  • 此XML中的任何增删改操作被执行后,自动清除缓存数据

  不推荐使用Mybatis的缓存机制,无论是一级缓存还是二级缓存,均会因为执行了增删改后自动清除缓存数据,虽然缓存数据可能与数据库中的数据不一致,但并不是所有数据都需要时刻保证一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java开发_Fan Ruiqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值