我在开发web时用到springboot整合mybatis后,发现每个功能查询基本都是一次事务查询,事务也就是会话对吧,相对于mybatis来说就是一次sqlSession查询,所以这个功能多次查询也不会命中同一个会话吧。
从日志得知每次查询不是同一个sqlsession实例。
所以我这个mybatis一级缓存貌似一直没有用到。
也不可能开启二级缓存,副作用太大了,就想问问,同一个查询不能共用同一个sqlSession嘛,这样既能减少sqlsession创建和销毁,还能用到一级缓存。

mybatis一级缓存失效问题,用不了呀,如何解决?(语言-java)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 皮蛋不吃粥 2023-02-04 15:42关注
如果是在一次会话多次查询 可能会用到一级缓存 但是有前提要求SQL完全一样,当然如果SqlSession调用了close(),clearCache(),或者执行CUD操作都会释放缓存,导致不生效,这是Mybatis原本的一级缓存,但是SpringBoot在集成的时候,如用的Mybatis的启动依赖,他的每次执行完SQL都会释放SqlSession中的缓存,所以SpringBoot集成的不会用到一级缓存,当然一种情况例外,就是开启了事务,事务开启后同事务下SpringBoot会从TheadLocal获取SqlSession,从而使一级缓存生效。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报