(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)一般情况下,一对多查询使用延迟加载,一对一查询使用立即加载。因为一对多可能有上万甚至更多的数据,如果立即加载的话会很占用空间,所以使用延迟加载;而一对一查询的话,只有一条数据,立即加载也不会有什么影响,所以可以立即加载。