Mybatis 延迟加载与缓存

151 阅读1分钟

延迟加载

在SqlMapConfig.xml中添加配置

 <settings>
<!--  开启mybatis支持延迟加载-->
     <setting name="lazyLoadingEnabled" value="true"/>
     <setting name="aggressiveLazyLoading" value="false"/>
 </settings>

如图可见只做了一对多的一表查询操作

后期输出需要时才将后表按需查询

去除后的对比

可见是一次查询所有

缓存

Mybatis的一级缓存: 一级缓存: 它指的是Mybatis中SQLSession对象的缓存 当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中、 该区域的结构是一个Map。当我们再次查询同样的数据,Mybatis会先去sqlsession中查询是否有,有点花直接拿出来用 当SQLSession对象消失时,mybatis的一级缓存也就消失了 二级缓存: 它值的是Mybatis中SqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象穿件的SqlSession贡献其缓存。 在Mybatis中当session不关闭时,可以反复调用

从输出结果来看

显然两者是相同,显然是同一事物

而当

此时运行发现

已经不是同一对象了。ps sqlSession.clearCacher();效果相同