mybatis+spring环境
我发起一次调用的过程中有一个查询语句会多次使用,第一次查询结果是0,然后会新增一条数据,有事务控制,未提交,正常结果是接下来的第二次、第三次查询应该是1,但是结果还是0。我跟踪看了日志,后面的查询根本就没有执行sql语句,而是直接从缓存获取了第一次的结果。为什么没有清空缓存呢?
因为这个问题是新功能改造引起的,所以我排查代码发现,有一段代码会另起一个事物,因为使用了静态类,所有使用了SpringContextHolder.getBean("")的方式获取bean,我把方法改成非静态的以后,用注入的方式获取bean,问题就没有出现了。请问该如何解释该问题。
代码如下:
Integer count = offerQueryInstSMO.queryProdOfferInstIsExist(prodOfferInstId);
if(count == 0 ){
offerOperInstSMO.saveProdOfferInst(prodOfferInst);
}
XXX
Integer count = offerQueryInstSMO.queryProdOfferInstIsExist(prodOfferInstId);
日志如下: