SSM项目从零开始到入门031-mybatis的一对多关联映射
发布日期:2021-06-30 16:30:19
浏览次数:3
分类:技术文章
本文共 1524 字,大约阅读时间需要 5 分钟。
先祭出上篇文章的关系图,上篇我们实现了,查询订单的同时查询订单所属的用户信息。现在有了新的问题,就是查询订单时,不光实现上篇功能,同时还要将订单明细查询出来。这就涉及到了一对多的查询。
首先我们写出查询的SQL语句
SELECT o.*, u.* , d.*FROM t_order o , t_user u , t_orderdetail dWHERE o.user_id = u.id AND o.id = d.order_id
从结果中可以看出,订单的信息有重复,这是因为id为1的订单有两条订单详情。所以如果我们用resultType来做映射的话就会出现订单信息的重复,我们不希望出现这个结果,即对orders的映射不能出现重复记录的情况。那么我们就需要在Orders.java类中添加一个List<OrderDetail> orderDetails属性来封装订单明细项,将订单信息映射到Orders中。
/** * 订单表 */public class Order { /** * 订单id */ private Integer id; /** * 用户id */ private Long userId; /** * 订单号 */ private String orderNumber; /** * 一个订单对应一个用户【一对一次采用对象】 */ private User user; /** * 一个订单包含多个订单明细【一对多采用集合】 */ private Listdetails; //get ... set 省略}
然后我们编写mapper接口方法
/*** 返回所有订单列表及订单明细* @return List*/public List queryOrderUserAndOrderDetail();
然后编辑映射文件xml
1.首先编写resultmap
这里直接继承前面所设置的OrderUserResultMap
2.然后加入sql查询
最后我们编辑测设类测试一下
@Test public void queryOrderUserAndOrderDetailTest() { ListqueryOrderAndUserAll = orderMapper.queryOrderUserAndOrderDetail(); for (Order order : queryOrderAndUserAll) { System.out.println(order.toString()); } for (Order order : queryOrderAndUserAll) { System.out.println(order.getDetails().size()); } }
转载地址:https://kevin.blog.csdn.net/article/details/79543021 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月22日 14时49分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
工厂模式解耦的升级版
2019-05-01
hrm中的jwt认证:获取用户数据
2019-05-01
前端权限控制:获取用户信息接口构造数据
2019-05-01
前端权限控制:前端菜单控制
2019-05-01
前端权限控制:实现思路分析-待修改
2019-05-01
有状态服务和无状态服务
2019-05-01
基于jwt的用户鉴权:配置拦截器并测试
2019-05-01
POI的概述
2019-05-01
POI文件导入:跨服务器调用查询部门信息
2019-05-01
DataURL:概述
2019-05-01
DataURL:实现原理及优缺点分析
2019-05-01
DataURL:实现员工头像保存
2019-05-01
DataURL:员工头像回显
2019-05-01
七牛云存储:通过SDK上传图片
2019-05-01
七牛云存储:断点续传
2019-05-01
七牛云存储:实现员工头像保存
2019-05-01
JasperReport:概述
2019-05-01
JasperReport:声明周期
2019-05-01
递归【应用】
2019-05-01
递归求阶乘
2019-05-01