【框架篇11】Mybatis框架-延迟加载使用及原理

43 阅读1分钟

知识点

  • 延迟加载,默认未开启
  • 什么叫做延迟加载 image.png 查询用户时候,把用户所属的订单也查询出来,这个是立即加载
    查询用户的时候,暂时不查询订单数据,当需要订单的时候,再查询订单,这个就是延迟加载 image.png image.png image.png

延迟加载的原理

  • 使用CGLIB创建目标对象的代理对象
  • 当调用目标方法user.getOrderList()时,进入拦截器invoke方法,发现user.getOrderList()是null值,执行sql查询order列表
  • 把order查询出来,然后调用user.setOrderList(List<Order> orderList),接着完成user.getOrderList()方法的调用 image.png

Mybatis是否支持延迟加载

  • 延迟加载的意思是:就是再需要用到数据时才进行加载,不需要用到数据时就不加载数据
  • Mybatis支持一对一关联对象和一对多关联集合对象的延迟加载
  • 在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnable=true|false