首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mybatis一级缓存问题

一级缓存的作用域有两种,分别是 SESSION 和 STATEMENT ,可以通过修改配置项 localCacheScope 来设置,默认的 SESSION 会缓存一个会话中执行的所有查询,用来加速重复的嵌套查询...问题 下面看一下两个一级缓存导致的问题: 问题 1 当 localCacheScope 被设置为 SESSION 的时候,并且当前服务有多个实例时就可能会导致查询到的数据不一致。...设置为 statement 时,查询后会清除本地缓存 if (configuration.getLocalCacheScope() == LocalCacheScope.STATEMENT...但是当 localCacheScope 设置为 STATEMENT 时在返回查询结果前反而会去清空缓存,到这里基本介绍完了 MyBatis 一级缓存的所有内容。...分布式应用推荐都把 localCacheScope 设置为 STATEMENT。 如果只是要避免问题 2 也可以简单的把查询的数据进行深拷贝,避免因为浅拷贝的问题造成数据异常的问题。

21010
您找到你想要的搜索结果了吗?
是的
没有找到

深入浅出mybatis之缓存机制

其次,再来跟踪一下参数localCacheScope的使用场景。 如下为MyBatis执行查询的时序图: ?...另外,当参数localCacheScope值为STATEMENT时,每次查询之后都会清空BaseExecutor的本地缓存。...内部的缓存策略 缓存实现原理分析 既然在MyBatis中是通过cacheEnabled和localCacheScope这2个参数来控制缓存的,那么如下的实现原理分析也基于这2个参数进行。...参数localCacheScope的有效值分别为SESSION,STATEMENT,当该参数值为STATEMENT时,每次查询操作都会清空BaseExecutor中的本地缓存。...参数cacheEnabled控制的缓存策略 在了解了参数localCacheScope控制的缓存策略之后,还需要继续研究参数cacheEnabled所控制的缓存策略。

57930

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券