时间:2021-05-20
1、概念:
MyBatis中的延迟加载,也称为懒加载,是指在进行表的关联查询时,按照设置延迟规则推迟对关联对象的select查询。例如在进行一对多查询的时候,只查询出一方,当程序中需要多方的数据时,mybatis再发出sql语句进行查询,这样子延迟加载就可以的减少数据库压力。MyBatis 的延迟加载只是对关联对象的查询有迟延设置,对于主加载对象都是直接执行查询语句的。
2、加载时机:
直接加载:执行完对主加载对象的 select 语句,马上执行对关联对象的 select 查询。侵入式延迟: 执行对主加载对象的查询时,不会执行对关联对象的查询。但当要访问主加载对象的详情属性时,就会马上执行关联对象的select查询。深度延迟: 执行对主加载对象的查询时,不会执行对关联对象的查询。访问主加载对象的详情时也不会执行关联对象的select查询。只有当真正访问关联对象的详情时,才会执行对关联对象的 select 查询。
注意:延迟加载的应用要求:关联对象的查询与主加载对象的查询必须是分别进行的select语句,不能是使用多表连接所进行的select查询。因为,多表连接查询,实质是对一张表的查询,对由多个表连接后形成的一张表的查询。会一次性将多张表的所有信息查询出来。
3、侵入式延迟加载:
①、Mybatis-config.xml大配置文件,首先开启延迟加载,然后再配置侵入式加载
<!--开启延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> <!--配置侵入式延迟加载 默认为false(深度加载) 侵入式:默认只会执行主加载SQL,那么当访问主加载对象的详细信息时才会执行关联对象的SQL查询 深度延迟:默认只执行主加载SQL,那么当调用到主加载对象中关联对象的信息时才会执行关联对象的SQL查询 --> <setting name="aggressiveLazyLoading" value="true"/>②、不调用主加载对象时只有一条SQL
③、调用主加载对象的信息时会产生两条SQL
4、深入式延迟加载:
①、Mybatis-config.xml大配置文件,首先开启延迟加载,然后再配置深度加载
<!--开启延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> <!--配置侵入式延迟加载 默认为false(深度加载) 侵入式:默认只会执行主加载SQL,那么当访问主加载对象的详细信息时才会执行关联对象的SQL查询 深度延迟:默认只执行主加载SQL,那么当调用到主加载对象中关联对象的信息时才会执行关联对象的SQL查询 --> <setting name="aggressiveLazyLoading" value="false"/>②、调用主加载对象时不会执行第二条加载SQL
③、调用关联对象详细信息时会执行第二次查询
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、Mybatis中的延迟加载1、延迟加载背景:Mybatis中Mapper配置文件中的resultMap可以实现高级映射(使用association、coll
本文介绍了vue异步加载高德地图的实现,分享给大家,具体如下:几种加载js的方式同步加载异步加载延迟加载同步加载用的最多的一种方式,又称阻塞模式,会阻止浏览器的
所谓的延迟加载通常是:直到用户交互时才加载。如何实现延迟加载呢?需要搞清楚三个方面:1、html元素的哪个属性需要延迟加载?2、需要对数据源的哪个字段进行延迟加
js的延迟加载有助与提高页面的加载速度,以下是延迟加载的几种方法:1.使用setTimeout延迟方法的加载时间延迟加载js代码,给网页加载留出更多时间func
延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前,视口外的图像不会加载。这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快。在某些情