延迟加载(懒加载)

**

什么是延迟加载(懒加载)

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

延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息。需要关联信息时再去按需加载关联信息。这样会大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。

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

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

验证测试
先测试在没有配置延迟加载时,mybatis操作sql语句次数

OrdersMapper.mxl文件中
查询订单与user表一对一的关系

<association property="user"
             select="com.xlj.Mapper.UserMapper.findUserById" column="user_id"></association>
SELECT * FROM orders

核心:

在这里插入图片描述
UserMapper.xml中
在这里插入图片描述

测试类中
在这里插入图片描述

在这里插入图片描述

使用懒加载

SqlMapConfig.xml配置文件中

在这里插入图片描述

OrdersMapper.xml文件中

在这里插入图片描述

在UserMapper.xml中

在这里插入图片描述

测试类中

在这里插入图片描述
原因是,代码中没有输出list中的相关信息,所以就没有继续执行sql语句
也就是你只是需要得到OrdersPojo本身对象及其属性信息,并没有想得到user属性

在这里插入图片描述

设置积极的懒加载

如果不设置,当你打印如下
也就是只是获取ordersPojo对象的属性时,那么mybatis也会自动将
该对象的user属性查询出来

在这里插入图片描述

但如果你设置了积极的懒加载模式
如果没有使用user对象,则也不会执行sql查询user表

在这里插入图片描述

使用懒加载完成user表与order表一对多的查询
查询user的id为1的用户所有订单信息
ordersMapper.xml中

在这里插入图片描述

userMapper.xml中
根据id查询

在这里插入图片描述

测试类

在这里插入图片描述
输出order信息则执行相关sql语句

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值