关于mybatis:mybatis-一级缓存导致查询结果与预期结果不一致

8次阅读

共计 516 个字符,预计需要花费 2 分钟才能阅读完成。

示例 sql:

@Transactional  
public RebateContract getInfo(RebateContract contract) {RebateContract rebContractInfo = rebateContractDao.getInfo(contract);  
   logger.info("agentId:" + rebContractInfo.getAgentId());  
   rebContractInfo.setAgentId(10000L);  
   // 不会再查问 而是从缓存中获取 rebContractInfo 的值  
 RebateContract rebContractInfo1 = rebateContractDao.getInfo(contract);  
   logger.info("agentId1:" + rebContractInfo1.getAgentId());  
   return rebContractInfo1;  
}

执行后果:

留神: 必须同一个事物中
同一个事务中查问一次后,间接修复查问后后果,再次雷同 sql 查问,理论不会再查问,而是从缓存中获取上次的查问后果。
但上次查问后果曾经被批改,所以前面查问获取到的值已与理论查问该获取的值不一样了。

正文完
 0