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对象的时候,都将一起查询出来。
部门信息在我们使用的时候再去查询
分段查询的基础之上加上两个配置
-->