mybatis查询缓存与结果实体对象

mybatis将查询结果缓存后,改变查询结果的实体对象的值,再次执行mybatis的查询语句,得到的数据为改变后的实体对象,而不再是数据库中的数据。
现象:
通过mapper执行了一个查询语句后,对查询的实体进行处理,再此执行了查询语句,返回的结果对象为处理后的数据,对查询再次处理出现异常。由于是跨service调用的,没有传实体对象而是传入ID参数再次执行查询,然后同样的查询语句,不同service返回的数据不一样。于是怀疑是缓存问题。
查询mybatis的缓存,了解到以及缓存为sqlsession级别,同样参数的查询语句,再次查询时实际从缓存中取。由于对第一次查询返回对象进行处理,第二次通过对象引用得到处理后的结果,而不是数据库的原始结果。
去掉mybatis的一级缓存。
1、通过在DAO方法中添加注解
@Options(flushCache = Options.FlushCachePolicy.TRUE)
没有起作用,应该是没有扫描DAO的注解
2、在xml的具体select方法中加属性flushCache=“true”

这次起作用了,执行两遍查询,都是数据库返回数据,而不是。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值