mybatis的二种加载方式
-延迟加载
- 在真正使用数据时才会被加载出来,不用的时候不查询,
按需求查询(懒加载)
立即加载
- 不管用不用,只要方法一调用,马上发起查询
通常情况下:一对多 多对多 我们采用懒加载方式
多对一 一对一 通常采用立即加载方式
开启延迟加载:在sqlMapConfig中加入
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
//在 3.4.1 及之前的版本默认值为 true,之后默认为false
<setting name="aggressiveLazyLoading" value="false"></setting>
<settings>
Mybatis配置文件中通过两个属性lazyLoadingEnabled和aggressiveLazyLoading来控制延迟加载和按需加载。
lazyLoadingEnabled:是否启用延迟加载,mybatis默认为false,不启用延迟加载。lazyLoadingEnabled属性控制全局是否使用延迟加载,特殊关联关系也可以通过嵌套查询中fetchType属性单独配置(fetchType属性值lazy或者eager)。
aggressiveLazyLoading:是否按需加载属性,默认值false,lazyLoadingEnabled属性启用时只要加载对象,就会加载该对象的所有属性;关闭该属性则会按需加载,即使用到某关联属性时,实时执行嵌套查询加载该属性。
SqlMapConfig.xml中修改配置,注册lazyLoadMapper.xml
一对一实现延迟加载
1.设置好延迟加载
2.映射中使用resultMap