知识点
- 延迟加载,默认未开启
- 什么叫做延迟加载
查询用户时候,把用户所属的订单也查询出来,这个是立即加载
查询用户的时候,暂时不查询订单数据,当需要订单的时候,再查询订单,这个就是延迟加载
延迟加载的原理
- 使用CGLIB创建目标对象的代理对象
- 当调用目标方法user.getOrderList()时,进入拦截器invoke方法,发现user.getOrderList()是null值,执行sql查询order列表
- 把order查询出来,然后调用user.setOrderList(
List<Order>orderList),接着完成user.getOrderList()方法的调用
Mybatis是否支持延迟加载
- 延迟加载的意思是:就是再需要用到数据时才进行加载,不需要用到数据时就不加载数据
- Mybatis支持一对一关联对象和一对多关联集合对象的延迟加载
- 在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnable=true|false