两个实体类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | @Data @NoArgsConstructor @AllArgsConstructor public class Order { @Serial private static final long serialVersionUID = 1L; /** orderId */ private Long orderId; /** 金额 */ private Double orderPrice; /** 显示顺序 */ @Excel(name = "显示顺序") private Long orderNum; /** 子数据: 不存数据库. */ private List<Order> children = new ArrayList<>(); /** 本级的数据: 不存数据库. */ private List<OrderDetail> data = new ArrayList<>(); } @Data @NoArgsConstructor @AllArgsConstructor public class OrderDetail { @Serial private static final long serialVersionUID = 1L; /** 明细id */ private Long detailId; /** 订单id */ private Long orderId; } |
实现方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public List<Order> selectOrderList(long parentId) { // 所有父级数据列表. // 从数据库取数据. var parentList = orderMapper.selectOrderListByParentId(parentId); var orderList = selectChildData(parentList); orderList.sort( Comparator.comparingLong(Order::getOrderNum)); return orderList; } private List<Order> selectChildData( List<Order> orderListParam) { List<Order> orderList = new ArrayList<>(); for (var item : orderListParam) { var childList = orderMapper.selectOrderListByParentId( item.getOrderId()); // 子项目 item.setChildren(selectChildData(childList)); // 获取明细数据 OrderDetail OrderDetail = new OrderDetail(); OrderDetail.setOrderId(item.getOrderId()); // 从数据库获取明细数据 item.setData( iOrderDetailService.selectOrderDetailList( OrderDetail)); orderList.add(item); } return orderList; } |