MyBatis的分布查询延迟加载(select_resultMap)
<!-- 分布好处 可以使用延迟加载 Employee==>Dept 我们每次查询Employee对象的时候,都将一起查询出来。 部门信息在我们使用的时候再去查询 分段查询的基础之上加上两个配置 -->
mybatis-config.xml 改变配置文件
<settings> <setting name="mapUnderscoreToCamelCase" value="true" /> //驼峰命名法 <!-- 懒加载 ,延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> <!-- 立即加载 --> <setting name="aggressiveLazyLoading" value="false"/> </settings>
测试方法
@Test public void test05() throws IOException{ SqlSessionFactory sqlsessionFactory=getSqlSessionFactory(); // 1 获取到的sqlsession不会自动提交数据 SqlSession openSession=sqlsessionFactory.openSession(); try{ EmployeeMapperPlus mapper=openSession.getMapper(EmployeeMapperPlus.class); //级联查询 /* Employee empAndDept=mapper.getEmpAndDept(1); System.out.println(empAndDept.getLastName());*/ //System.out.println(empAndDept.getDept()); // 分布查询 Employee employee=mapper.getEmpByIdStep(1); System.out.println(employee.getLastName()); //System.out.println(employee.getDept()); }finally{ openSession.commit(); } }
在开启延迟加载的情况下
<setting name="lazyLoadingEnabled" value="true"/>
在没有开启延迟加载的情况,立即加载
<setting name="aggressiveLazyLoading" value="false"/>
所以好处就是
<!-- 分布好处 可以使用延迟加载 Employee==>Dept 我们每次查询Employee对象的时候,都将一起查询出来。 部门信息在我们使用的时候再去查询 分段查询的基础之上加上两个配置 -->