在配置懒加载按照官网上介绍写了好几次都没成功,后来百度查了,发现是“隐藏触发了懒加载”
配置文件
<settings>
<!-- 打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 将积极加载改为消息加载即按需加载 -->
<setting name="aggressiveLazyLoading" value="false" />
</settings>
User
public class IUser {
//用户ID
private int id;
//用户姓名
private String username;
//用户性别
private String sex;
//一个用户能创建多个订单,用户和订单构成一对多的关系
public List<Orders> orders;
...
Orders
public class Orders {
//订单ID
private int id;
//用户ID
private int userId;
...
}
**关系:**IUser 中的属性 Orders
其余的配置省略
测试类
@Test
public void testLazy(){
SqlSession session = SqlSessionUtils.getSession();
IUserMapper mapper = session.getMapper(IUserMapper.class);
IUser user = mapper.findUserById(1);
System.out.println(user);
session.close();
}
就上面的代码,通过调试发下还是会“立即加载”,原因是 System.out.println(user)触发了懒加载
所以在配置文件中加上一个配置
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 加上这段代码即可 -->
<setting name="lazyLoadTriggerMethods" value=""/>
</settings>