系列文章目录
文章目录
- 系列文章目录
- 一对多实现【模型里有集合讲解】
- 需求
- 第一步:在Orders中添加定单明细
- 第二步:Mapper接口
- 总结
一对多实现【模型里有集合讲解】
什么时候我们会用到一对多
需求
根据定单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
接口
映射文件
测试类