NAME-LI 2023-03-22 23:48 采纳率: 16.7%
浏览 82
已结题

SpringBoot 一个事务内执行两个同样的sql语句,第一次查询是存在数据的,第二次查询返回数据是空的。

这个是外部方法deliverOrderInfoList
在这个方法内执行了一个sql
List infoList = infoMapper.selectAllByOrderIdList(orderIdList);

img

然后在方法内部调用了createLogisticInfoBatch这个方法
createLogisticInfoBatch这个方法也执行了List infoList = infoMapper.selectAllByOrderIdList(orderIdList);这个查询语句

img

为什么第二次查询返回的数据是空的,第一次查询的数据是有的?

  • 写回答

3条回答 默认 最新

  • NAME-LI 2024-06-17 11:39
    关注

    Mybatis一级缓存,一个事务下,查询两次一样的sql,当查询条件一致时,会命中mybatis的一级缓存,这时候将不会查询数据库而直接返回缓存数据,提高性能

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月25日
  • 已采纳回答 6月17日
  • 创建了问题 3月22日