**
什么是延迟加载(懒加载)
**
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语句