Mybatis多表连接查询——多对多

本文详细介绍了在Mybatis中如何处理多对多关系的查询。通过实例展示了如何创建对应的数据类,定义接口及结果集映射,将多对多关系转化为一对多,便于数据展示。具体涉及orders、user、orderdetail和items四张表的连接查询,以及Order、Detail、User和Item四个类的设计,最终在User类中通过orderList来组织所有信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis多表连接查询——多对多

有如下四张表;如果要整合他们的信息到一张表;可以使用如下查询语句
SELECT orders.*, user.user_name, user.user_gender, user.user_address,
orderdetail.orderdetail_id, orderdetail.item_id, orderdetail.item_num,
orderdetail.order_id, items.item_name, items.item_price
FROM orders, user, orderdetail, items
WHERE orders.user_id=user.user_id AND orders.order_id = orderdetail.order_id AND orderdetail.item_
orderdetail(订单细节):
在这里插入图片描述
orders(订单)
在这里插入图片描述
items(商品信息)
在这里插入图片描述
user(用户)
在这里插入图片描述
在这里插入图片描述

创建表所对应的类

把item装进detail;把detail装进order;把order装进user;最后的结果由user呈现;就把多对多的关系转换成了一对多的关系
在这里插入图片描述
Order
在Order中创造List<Detail>

/**
 * @author Una
 * @date 2022/8/17 21:11
 * @description:
 */

@Data
public class Order {
   
    private Integer orderId;
    private Integer userId;
    private String orderName;
    private Date orderDate;
    private String orderNote;
    private Integer orderNum;
    private List<Detail> detailList;

    public Order() {
   
    }

    public Order(Integer orderId, Integer userId, String orderName, Date orderDate, String orderNote, Integer orderNum, List<Detail> detailList) {
   
        this.orderId = orderId;
        this.userId = userId;
        this.orderName = orderName;
        this.orderDate = orderDate;
        this.orderNote = orderNote;
        this.orderNum = orderNum;
        this.detailList = detailList;
    }
}

Detail
在Detail中创建List<Item>

package com.entity;

import lombok.Data;

import java.util.List;

/**
 * @author Una
 * @date 2022/8/17 21:11
 * @description:
 */

@Data
public class Detail {
   
    private Integer orderId;
    private Integer itemId;
    private Double itemNum;
    private Integer detailId;
    private List<Item> itemList;

    public Detail() {
   
    }

    public Detail(Integer orderId, Integer itemId, Double itemNum, Integer detailId, List<Item> itemLi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值