MyBatis入门【十一】resultMap小结及延迟加载

49 篇文章 5 订阅
37 篇文章 1 订阅

resultType:

作用:

将查询结果按照sql列名pojo属性名一致性映射到pojo中

场合:

常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示再页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中的是pojo)即可

resultMap:

使用association和collection完成一对一和一对多的高级映射(对查询结果有特殊的映射要求)

  1. association:

作用:

将关联查询信息映射到一个pojo对象中

场合:

为了方便查询关联信息可以使用association将关联信息映射为用户对象中的pojo属性中,比如:查询订单及关联用户信息
使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要使用resultType还是resultMap

  1. collection:

作用:

将关联查询信息映射到一个list集合中

场合:

为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,比如:查询用户权限范围模块及模块下的菜单,可使用collection将模块映射到模块list中,将菜单列表应映射到模块对象的菜单list属性中,这样做的目的也是方便对查询结果集进行遍历查询

如果使用resultType无法将查询结果映射到list集合中

延迟加载

1、什么是延迟加载

resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能

需求:
如果查询订单并且关联查询用户信息,如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息,把对用户信息的按需去查询就是延迟加载

延迟加载:
先从单表中查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度快

2、使用association实现延迟加载

参数说明:

select:指定延迟加载需要执行的statement的id(是根据user_id查询用户信息的statement)

要使用userMapper.xml中findUserById完成根据用户id,用户信息的查询,如果findUserbyId不在本mapper中需要前边加namespace

column:订单信息中关联用户信息查询的列,是user_id

<association property="user" javaType="User全路径" select="" column="">
</association>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值