开发者社区> 问答> 正文

mybatisplus 在同一个事务中,查询有缓存,如何不要缓存 配置报错 

@青苗 你好,想跟你请教个问题:我用mybatisplus 的乐观锁插件,我的想法是这样的,如果我update失败时,我想进行重试,而不是回滚。所以我自己定义了一个重试的aop 切面,但问题是我发现当重试查询的时候,获取到的数据还是旧的数据,但其实数据库已经改变了的,导致重试无效,哪个地方可以关掉缓存吗?

mybatis-plus: configuration: cache-enabled: false
 这个设置false 还是不行,我不知道还有没有什么缓存的配置,感谢

展开
收起
kun坤 2020-05-31 18:30:49 2911 0
1 条回答
写回答
取消 提交回答
  • 不太清楚一级缓存是不是会受这个参数的影响。 我想到的另外一个可能因素,是数据库的事务隔离级别,如果是可重复读的话,就算version更新,在当前事务内也不会读取到最新的version值。隔离级别降为读已提交,才可以读取到已经提交的version值######可以,事务隔离级别要放在最外面的事务才行,我第一次试的时候放在小事务里了,不生效######我设置为读未提交(read-uncommitted)都没用,查询sql 都打印了,应该不是缓存的问题? 但是隔离级别我设置到最低了,查询还是旧的数据。会不会跟我手动改数据库的原因有关?######如果开启了一级缓存建议关闭使用 service 切面的缓存, 注意乐观锁 version 值是不是发生了变化导致更新失败######回复 @青苗 : 感谢感谢######回复 @1006059906 : 默认不会缓存######version 是对的,主要是查询出来的结果没变。我用的查询结果是mybatisplus 自带的方法: public T getOne(Wrapper<T> queryWrapper); 这个方法有缓存吗?######要求这么高用串型事物吧######1.看事务隔离级别 2.如果是repeatable read, 是一致性非锁定读-读快照数据(undo)并且始终是读一开始行数据版

     ######感谢######我也觉得是事务原因,但是我降到最低都不行。跟mybatisplus 的sqlsession 有没有关系呢

    2020-05-31 18:30:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
高性能Web架构之缓存体系 立即下载