SSM之MyBatis_02_08_一对多实现【模型里有集合讲解】、数据库里面的字段和model里面的字段在collection里面配置的对应关系

系列文章目录

一对多实现【模型里有集合讲解】

什么时候我们会用到一对多

需求

根据定单ID查找定单信息、用户信息和定单明细信息

Select
orders.id,
orders.user_id,
orders.number,
orders.createtime,
orders.note,
user.username,
user.address,
orderdetail.id detail_id,
orderdetail.items_id,
orderdetail.items_num
from
orders,user,orderdetail
where
orders.user_id = user.id
and orders.id = orderdetail.orders_id
and orders.id = 3;

在这里插入图片描述
sql可以优化一下,如下:

SELECT
o.*,
u.username,
u.address,
od.id detail_id,
od.items_id,
od.items_num
FROM
orders o,
user u,
orderdetail od
WHERE
o.user_id = u.id
AND o.id = od.orders_id
AND o.id = 3

在这里插入图片描述
在这里插入图片描述

在mybatis中怎么实现,这就要用到collection了
目标:掌握collection的使用

第一步:在Orders中添加定单明细

在这里插入图片描述

第二步:Mapper接口

在这里插入图片描述
第三步:OrderMapper.xml
在这里插入图片描述
分析1
在这里插入图片描述
分析2
在这里插入图片描述
一定要注意对应关系
【非常重要】
在这里插入图片描述

第四步:测试
在这里插入图片描述
只要前面2篇文章搞清楚了,这篇太简单了,看看注意注意的地方就行了,自己写一写,很简单
根据文档自己写写就行了
就不超级详细的说明了

总结

1、mybatis使用resultMap的collection对关联查询的多条记录映射到一个list集合属性中。

2、使用resultType实现:
需要对结果集进行二次处理。
将订单明细映射到orders中的orderdetails中,需要自己处理,使用双重循环遍历,去掉重复记录,将订单明细放在orderdetails中。

3、如果联合查询,查询出来的列有重名的,我们就要给其中重复的取别名

附上详细代码:
model
在这里插入图片描述
在这里插入图片描述
接口
在这里插入图片描述
映射文件
在这里插入图片描述
测试类
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值