springboot中Mybatis 一级缓存 是否生效?

众所周知,myabtis的一级缓存是sqlSesstion级别的,然后经过spring-mybatis的增强处理,每次都会自动关闭sqlsesstion,所以导致生成新的sqlsession,也就是看上去一级缓存失效了?

那么矛盾点是:
以下一个很普通的service

@Service
public class TestSerivce {

@Autowired
private PowerPlanDao powerPlanDao;

public Object getObject(){
    for(int i=0;i<2;i++){
        powerPlanDao.queryMap();
    }
    return "";
}

}

执行时 通过观察控制台打印sql情况,却又发现只执行了一次sql,也就是说缓存了第一次的结果,所以又得出了生效的结果,不知是为何?

sprinboot版本:2.5.13
mybatis版本: 1.2.0

阅读 2.1k
1 个回答

如果没有额外配置,不生效才是对的,debug一看这个service是不是代理对象就知道了,就怕是花里胡哨的配置事务走了代理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题