mybatis延迟加载默认开启(Mybatis中的延迟加载)
mybatis延迟加载默认开启(Mybatis中的延迟加载)
2024-11-08 12:36:23  作者:失宠于上帝  网址:https://m.xinb2b.cn/tech/xep505671.html

延迟加载又叫懒加载,也叫按需加载。也就是说先加载主信息,在需要的时候,再去加载从信息。

在Mybatis中,resultMap标签 的association标签和collection标签具有延迟加载的功能。

1、拷贝jar包

延迟加载中查询出来的是一个代理对象,不是真正的对象本身,可参考hibernate中的load方法,利用log4j将日志信息打印在控制台可以很明确的看到,所以在使用延迟加载时,需要用到cglib包。

<dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.6</version></dependency>

2、配置全局设置

<!-- 全局设置 -->

<settings>

<!-- 打开延迟加载的开关,默认为false,即非延迟加载 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 将积极加载改为消极加载 --> <setting name="aggressiveLazyLoading" value="true"/> <!--两个合在一起配置就是,消极的延迟加载-->

</settings>

官方对这两个属性的解释是:

lazyLoadingEnabled 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。(是否延迟加载当前对象的关联对象)

aggressiveLazyLoading 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。(是否延迟加载当前对象属性的关联对象)

延迟加载会生成代理对象

可以看出,当什么都不配置时,默认为用一个从连接池中取得的连接完成两个sql语句的查询,即非延迟,积极的查询

(2)配置 <setting name="lazyLoadingEnabled" value="true" />

aggressiveLazyLoading的默认值为false 即只配 lazyLoadingEnabled为true或者同时配置两个为一true一false的结果相同

只要结果映射中配置了association

则执行懒加载特性:不查询author的属性,则不执行子查询。

当只有测试中的第一条输出语句执行时结果如下图:


可以看到此时是懒加载。

当测试中的两条输出语句都执行时结果如下图:


可以看出,此时为非积极的延迟加载,只有在需要查询author时才会执行查询author的sql语句。

(2)配置 <setting name="lazyLoadingEnabled" value="true" />且

<setting name="aggressiveLazyLoading" value="true"/> 此时为积极的延迟加载

当只有测试中的第一条输出语句执行时结果如下图:


可以看出,此时的结果为虽然只需要blog的id,但是author依旧被查询,而且用到的是两个连接查询。

当测试中的两条输出语句都执行时结果如下图:


可以看到,此时两个输出语句打印的结果是连接在一块的,也就是说在打印author信息之前,author已经被查询出来,而不是像上面非积极的延迟加载那样,用到author时才执行sql语句。

如果第一个设置的不是true时,第二个设置是没有意义的,这个可以看一下官方文档上写的,看完官方文档就一目了然了


  • 汤小米进入雷区(超级麻辣的汤小米同志在我眼里真的闪闪发光啊)
  • 2024-11-08超级麻辣的汤小米同志在我眼里真的闪闪发光啊在电视剧麻辣女兵里面,每一个人物都很鲜活、都很有魅力,但在这些角色当中,我最喜欢的还是汤小米和左轮在女性角色中,我永远偏爱汤小米剧里剧外,汤小米这个角色都有很多人喜欢、很多人愿意跟随为什么她能让那么多。
  • 三星堆的七大千古之谜(三星堆有哪些未解之谜)
  • 2024-11-08三星堆有哪些未解之谜△在位于四川省广汉市的三星堆遗址5号“祭祀坑”中,考古人员在清理新发现的金面具残片1929年,四川省广汉市南兴镇西北鸭子河南岸,偶然被发现的玉石器显露出古老文明的一隅92年过去,这个被命名为“三星堆”。
  • 绝地求生怎么解决吃鸡卡(流畅吃鸡不是梦)
  • 2024-11-08流畅吃鸡不是梦硬实力不够,只能降特效或升级平台《绝地求生》刚刚推出的时候是以优化差、BUG多而闻名,对硬件性能的要求极高,特别是16GB内存容量的需求,在这个内存价格暴涨的时代,让玩家直呼承受不起不过去年年底正式版。
  • 欲望都市续集更新时间(欲望都市续集回归)
  • 2024-11-08欲望都市续集回归什么样的时尚剧能在物质丰裕的年代活下来,我们该记住哪些?文|李琳婧最近,被奉为“时尚圣经”的时尚电视剧《欲望都市》的续集《AndJustLikeThat》(暂译:《就这样》)正式播出剧中,女主角凯莉和。
  • 潮州方言有哪些(沈观城讲古咸涩老-潮州方言版本)
  • 2024-11-08沈观城讲古咸涩老-潮州方言版本辑录苏树鹏话说许天时有个咸涩老与众不同,咸到者盐筒拢会生虫到了吃饭之时,伊就在饭桌顶吊块滴呢囝咸菜扒嘴饭伊就望一下咸菜,扒嘴饭伊就望一下咸菜,伊呾按照生配饭落就好许一日正裸食饭,伊老婆望加下咸菜,伊即。
  • 金庸笑傲江湖漏洞(笑傲江湖尴尬失误)
  • 2024-11-08笑傲江湖尴尬失误把一个虚构的故事讲得精彩是很难的,甚至对于绝大多数人来说将一个虚构的故事完整地讲出来就已经是一件难事,因为只要是编出来的东西就难免会有漏洞,而如果这个故事的创作周期拉长,那么则更容易出现一些前言不搭后。
  • 足球技术依旧稳准狠(足球场上的黑科技)
  • 2024-11-08足球场上的黑科技前几天编辑部的韩老湿找到我死皮赖脸义正言辞哭天抢地的要我写一篇关于世界杯VAR的推送实在是拗不过他,这么大一男人拿着个抱枕在身边晃来晃去唱学猫叫今天就给差友们介绍介绍今年世界杯采用的这项黑科技VAR,。
  • 手表为什么不能送人(手表为啥不能送人)
  • 2024-11-08手表为啥不能送人手表属于钟表一类,送手表等于送终,寓意不好,所以送礼物不能送手表有用的礼物不如无用的礼物建议不要送实用性太强的东西,例如衣服、香水、背包等,除非对自己的品味有绝对的把握这些东西人人都有很多,如果不够出。
  • plm系统构建及项目管理(产品生命周期管理)
  • 2024-11-08产品生命周期管理以下文章来源于PLM,作者三品软件Luke作者:韩露丨来源:三品软件本文经授权转载产品全生命周期管理(PLM:ProductLifecycleManagement)系统,是目前普遍应用在企业信息化中的。
  • 赵文卓主演的黄飞鸿系列电影(继黄飞鸿大战生化人后)
  • 2024-11-08继黄飞鸿大战生化人后前不久,赵文卓那部以网络大电影形式公映的《黄飞鸿之南北英雄》,又名《黄飞鸿之生化人》上线没多久后,就有消息传出,赵文卓将翻拍[霍元甲],而且其之前也曾拍过一部《霍元甲》电视连续剧原以为赵文卓会开始筹备。
  • 数码宝贝第一部里面的最强数码兽(独属于男二号的二哈兽)
  • 2024-11-08独属于男二号的二哈兽纵观数码宝贝历史,男一基本暴龙,男二基本二哈,犬科数码宝贝基本上就是男二的专属,看主角团合照只要谁旁边蹲着条狗不用多说,这位就是男二号了今天就带大家看看,男二号的狗狗型数码宝贝吧!NO.1独角兽加布兽。