Mybatis延迟加载的实现方式

  

<强> 1,概念:

  

MyBatis中的延迟加载,也称为懒加载,是指在进行表的关联查询时,按照设置延迟规则推迟对关联对象的选择查询。例如在进行一对多查询的时候,只查询出一方,当程序中需要多方的数据时,MyBatis再发出sql语句进行查询,这样子延迟加载就可以的减少数据库压力.MyBatis的延迟加载只是对关联对象的查询有迟延设置,对于主加载对象都是直接执行查询语句的。

  

<强> 2,加载时机:

  

直接加载:执行完对主加载对象的选择语句,马上执行对关联对象的选择查询。侵入式延迟:执行对主加载对象的查询时,不会执行对关联对象的查询。但当要访问主加载对象的详情属性时,就会马上执行关联对象的选择查询。深度延迟:执行对主加载对象的查询时,不会执行对关联对象的查询。访问主加载对象的详情时也不会执行关联对象的选择查询。只有当真正访问关联对象的详情时,才会执行对关联对象的选择查询。

  

注意:延迟加载的应用要求:关联对象的查询与主加载对象的查询必须是分别进行的选择语句,不能是使用多表连接所进行的选择查询。因为,多表连接查询,实质是对一张表的查询,对由多个表连接后形成的一张表的查询。会一次性将多张表的所有信息查询出来。

  

<强> 3,侵入式延迟加载:

  

①, Mybatis-config.xml大配置文件,首先开启延迟加载,然后再配置侵入式加载

        & lt; !——开启延迟加载——比;   & lt;设置name=" lazyLoadingEnabled " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——配置侵入式延迟加载默认为假(深度加载)   侵入式:默认只会执行主加载SQL,那么当访问主加载对象的详细信息时才会执行关联对象的SQL查询   深度延迟:默认只执行主加载SQL,那么当调用到主加载对象中关联对象的信息时才会执行关联对象的SQL查询   ——比;   & lt;设置name=" aggressiveLazyLoading " value=" https://www.yisu.com/zixun/true "/祝辞      

②,不调用主加载对象时只有一条SQL

  

 Mybatis延迟加载的实现方式

  

 Mybatis延迟加载的实现方式

  

③,调用主加载对象的信息时会产生两条SQL

  

 Mybatis延迟加载的实现方式

  

 Mybatis延迟加载的实现方式

  

<强> 4,深入式延迟加载:

  

①, Mybatis-config.xml大配置文件,首先开启延迟加载,然后再配置深度加载

        & lt; !——开启延迟加载——比;   & lt;设置name=" lazyLoadingEnabled " value=" https://www.yisu.com/zixun/true "/比;   & lt; !——配置侵入式延迟加载默认为假(深度加载)   侵入式:默认只会执行主加载SQL,那么当访问主加载对象的详细信息时才会执行关联对象的SQL查询   深度延迟:默认只执行主加载SQL,那么当调用到主加载对象中关联对象的信息时才会执行关联对象的SQL查询   ——比;   & lt;设置name=" aggressiveLazyLoading " value=" https://www.yisu.com/zixun/false "/祝辞      

②,调用主加载对象时不会执行第二条加载SQL

  

 Mybatis延迟加载的实现方式

  

 Mybatis延迟加载的实现方式

  

③,调用关联对象详细信息时会执行第二次查询

  

 Mybatis延迟加载的实现方式

  

 Mybatis延迟加载的实现方式

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Mybatis延迟加载的实现方式