我在开发web时用到springboot整合mybatis后,发现每个功能查询基本都是一次事务查询,事务也就是会话对吧,相对于mybatis来说就是一次sqlSession查询,所以这个功能多次查询也不会命中同一个会话吧。
从日志得知每次查询不是同一个sqlsession实例。
所以我这个mybatis一级缓存貌似一直没有用到。
也不可能开启二级缓存,副作用太大了,就想问问,同一个查询不能共用同一个sqlSession嘛,这样既能减少sqlsession创建和销毁,还能用到一级缓存。
如果是在一次会话多次查询 可能会用到一级缓存 但是有前提要求SQL完全一样,当然如果SqlSession调用了close(),clearCache(),或者执行CUD操作都会释放缓存,导致不生效,这是Mybatis原本的一级缓存,但是SpringBoot在集成的时候,如用的Mybatis的启动依赖,他的每次执行完SQL都会释放SqlSession中的缓存,所以SpringBoot集成的不会用到一级缓存,当然一种情况例外,就是开启了事务,事务开启后同事务下SpringBoot会从TheadLocal获取SqlSession,从而使一级缓存生效。
不知道你这个问题是否已经解决, 如果还没有解决的话: