(1)支持!MyBatis有 两种加载方式:立即加载和延迟加载 。
MyBatis 只支持association关联对象和collection关联集合对象的延迟加载 ,association指的是一对一关联查询的,collection指的是一对多关联查询。
(2)在MyBatis配置文件中,有两种方式可以配置是否启用延迟加载:
第一种是在配置文件的<settings>标签中为所有嵌套查询设为延迟加载
第二种是在<association>、<collection>中添加<fetchType>设置
<settings>
<!--2.开启延迟加载-->
<!--(1)此方式为:设置所有的分解式(N+1)查询都为延迟加载:
注意:这种方式很少使用,因为不可能为所以分解式查询都设置为延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--(2)此方式为:映射文件中<collection>或<association>中设置了fetchType的方法触发延迟加载,设置为空字符串即可。-->
<setting name="lazyLoadTriggerMethods" value=""/>
</settings>
(3) 一般情况下, 一对多查询使用延迟加载 , 一对一查询使用立即加载 。因为一对多可能有上万甚至更多的数据,如果立即加载的话会很占用空间,所以使用延迟加载;而一对一查询的话,只有一条数据,立即加载也不会有什么影响,所以可以立即加载。