| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> mybatis——轻松使用lazyLoadingEnabled(懒加载)和aggressiveLazyLoading解决mybatis中的“N+1”问题(超详细) -> 正文阅读 |
|
[Java知识库]mybatis——轻松使用lazyLoadingEnabled(懒加载)和aggressiveLazyLoading解决mybatis中的“N+1”问题(超详细) |
目录 1.5测试未使用lazyLoadingEnabled和aggressiveLazyLoading 2.lazyLoadingEnabled和aggressiveLazyLoading ?2.2配置aggressiveLazyLoading并测试
1.代码演示1.1创建POJO我们有User和Order两个对象
1.2创建Mapper接口
1.3创建XML映射文件UserMapper.xml
?注意UserMapper.xml中的?<association property="orderId" column="id" select="user.mapper.OrderMapper.getOrder"/>的级联
1.4创建mybatis-config.xml文件
1.5测试未使用lazyLoadingEnabled和aggressiveLazyLoading
主要看日志执行了几条sql ?这是代码演示"N+1",下面我们使用lazyLoadingEnabled和aggressiveLazyLoading 2.lazyLoadingEnabled和aggressiveLazyLoadinglazyLoadingEnabled是全局延时设置,也叫懒加载,默认为false,所有的级联都会被加载出来,但是全部加载或者不加载就过于武断,达不到我们要的效果,所以就有了aggressiveLazyLoading aggressiveLazyLoading的默认值在3.4.1之前包含当前版本为false,在3.4.1版本之后为true 值为false时,只加载调用的属性,不调用的不加载,例如: 在测试案例中,User调用了getUserName()这个属性,那么加载的只有User这个对象 如果值为true,只要调用User对象的任何一个方法就会加载整个对象(包含Order的查询)会造成级联 2.1配置lazyLoadingEnabled并测试?在mybatis-config.xml文件中配置settings,<setting name="lazyLoadingEnabled" value="true"/>, 再次运行上方的测试案例,结果如下,就只剩下了一个sql,因为全部延迟加载了 ?2.2配置aggressiveLazyLoading并测试如果将aggressiveLazyLoading的值设置为true ?并且再次运行测试案例 ?结果如下 ?你会发现明明User对象只调用getuserName()方法,但是也出现了Order的sql查询 如果看完还是不太理解,尽量动手尝试一下,lazyLoadingEnabled比较好理解,重点是aggressiveLazyLoading不太好理解 以上为个人理解,如有不对欢迎指出, |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:20:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |