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

时间:2021-12-28 01:11:32


系列文章目录

文章目录

  • 系列文章目录
  • 一对多实现【模型里有集合讲解】
  • 需求
  • 第一步:在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;

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


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

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


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

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

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

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

第二步:Mapper接口

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


第三步:OrderMapper.xml

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


分析1

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


分析2

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


一定要注意对应关系

【非常重要】

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

第四步:测试

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


只要前面2篇文章搞清楚了,这篇太简单了,看看注意注意的地方就行了,自己写一写,很简单

根据文档自己写写就行了

就不超级详细的说明了

总结

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

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

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

附上详细代码:

model

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


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


接口

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


映射文件

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


测试类

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