分步查询的优点:实现延迟加载
但是必须在核心配置文件中设置全局配置信息:
- lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载
- aggressiveLazyLoading:默认是false,则每个属性都会按需加载,获取的数据是什么,就只会执行相应的sql;若改为true,则任何方法的调用都会加载该对象的所有属性。
- 改配置信息aggressiveLazyLoading可以写,也可以不写,因为默认就是按需加载
在核心配置文件中设置全局配置信息

设置当前的分步查询是否使用延迟加载
在开启了延迟加载的环境中,可通过association 和 collection 中的 fetchType 属性设置当前的分步查询是否使用延迟加载, fetchType="lazy(延迟加载)|eager(立即加载)"。

测试

延迟加载,只执行了一条语句

立即加载,执行了两条语句
