问题原因

MyBatis 缓存导致查询非最新数据

解决方法

在 mapper 的 xml 标签中加入 flushCache="true"useCache="false" 属性

问题分析

当为 select 语句时:

flushCache 默认为 false,表示任何时候调用语句,都不会清空本地缓存和二级缓存。
useCache 默认为 true,表示会将本条语句的结果进行二级缓存。

当为 insert、update、delete 语句时:

flushCache 默认为 true,表示任何时候语句被调用,都会导致本地缓存和二级缓存被清空。
useCache 属性在该情况下没有。

标签: MyBatis, Java

添加新评论