嗝屁小孩纸 2023-02-04 12:01 采纳率: 80.8%
浏览 16
已结题

mybatis一级缓存失效问题,用不了呀,如何解决?(语言-java)

  • 我在开发web时用到springboot整合mybatis后,发现每个功能查询基本都是一次事务查询,事务也就是会话对吧,相对于mybatis来说就是一次sqlSession查询,所以这个功能多次查询也不会命中同一个会话吧。

  • 从日志得知每次查询不是同一个sqlsession实例。

  • 所以我这个mybatis一级缓存貌似一直没有用到。
    也不可能开启二级缓存,副作用太大了,就想问问,同一个查询不能共用同一个sqlSession嘛,这样既能减少sqlsession创建和销毁,还能用到一级缓存。

  • 写回答

2条回答 默认 最新

  • 皮蛋不吃粥 2023-02-04 15:42
    关注

    如果是在一次会话多次查询 可能会用到一级缓存 但是有前提要求SQL完全一样,当然如果SqlSession调用了close(),clearCache(),或者执行CUD操作都会释放缓存,导致不生效,这是Mybatis原本的一级缓存,但是SpringBoot在集成的时候,如用的Mybatis的启动依赖,他的每次执行完SQL都会释放SqlSession中的缓存,所以SpringBoot集成的不会用到一级缓存,当然一种情况例外,就是开启了事务,事务开启后同事务下SpringBoot会从TheadLocal获取SqlSession,从而使一级缓存生效。

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

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 创建了问题 2月4日

悬赏问题

  • ¥30 motoradmin系统的多对多配置
  • ¥15 求组态王串口自定义通信配置方法或代码?
  • ¥15 实验 :UML2.0 结构建模
  • ¥20 用vivado写数字逻辑实验报告撰写,FPGA实验
  • ¥15 为什么shp文件会有这种小方块?
  • ¥15 ecplise在连接数据库时显示加载驱动成功但是数据库连接失败
  • ¥15 visionmaster启动失败,提示为“机器不满足授权而被禁用”
  • ¥15 IDEA中圈复杂度如何具体设置
  • ¥50 labview采集不了数据
  • ¥15 Multisim红外倒车雷达仿真中距离问题