mybatis-多对多实现讲解

实体类1

package com.mybatis.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;


public class User implements Serializable {
    private int id;
    private String username;// 用户姓名
    private String sex;// 性别
    private Date birthday;// 生日
    private String address;// 地址

    private List<Orders> orders;

    public List<Orders> getOrders() {
        return orders;
    }

    public void setOrders(List<Orders> orders) {
        this.orders = orders;
    }

    public User() {
    }

    public User(String username, String sex, Date birthday, String address) {
        this.username = username;
        this.sex = sex;
        this.birthday = birthday;
        this.address = address;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", sex='" + sex + '\'' +
                ", birthday=" + birthday +
                ", address='" + address + '\'' +
                ", orders=" + orders +
                '}';
    }
}

实体类2

package com.mybatis.model;

import java.util.Date;
import java.util.List;

/**
 * @author MJC
 * @date 2019-11-21 16:56
 * @description  订单实体类
 */
public class Orders {
    private Integer id;
    private Integer user_id;
    private String number;
    private Date createtime;
    private String note;
    private User user;
    private List<OrdersDetails> ordersDetails;

    public List<OrdersDetails> getOrdersDetails() {
        return ordersDetails;
    }

    public void setOrdersDetails(List<OrdersDetails> ordersDetails) {
        this.ordersDetails = ordersDetails;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getUser_id() {
        return user_id;
    }

    public void setUser_id(Integer user_id) {
        this.user_id = user_id;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    @Override
    public String toString() {
        return "Orders{" +
                "id=" + id +
                ", user_id=" + user_id +
                ", number='" + number + '\'' +
                ", createtime=" + createtime +
                ", note='" + note + '\'' +
                ", user=" + user +
                ", ordersDetails=" + ordersDetails +
                '}';
    }
}

实体类3

package com.mybatis.model;

/**
 * @author MJC
 * @date 2019-11-21 18:57
 * @description 订单详情实体类
 */
public class OrdersDetails {
    private Integer id;
    private String items_id;
    private String items_num;
    private Items items;

    public Items getItems() {
        return items;
    }

    public void setItems(Items items) {
        this.items = items;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getItems_id() {
        return items_id;
    }

    public void setItems_id(String items_id) {
        this.items_id = items_id;
    }

    public String getItems_num() {
        return items_num;
    }

    public void setItems_num(String items_num) {
        this.items_num = items_num;
    }

    @Override
    public String toString() {
        return "OrdersDetails{" +
                "id=" + id +
                ", items_id='" + items_id + '\'' +
                ", items_num='" + items_num + '\'' +
                ", items=" + items +
                '}';
    }
}

实体类4

package com.mybatis.model;

import javax.xml.soap.Text;

/**
 * @author MJC
 * @date 2019-11-21 19:55
 * @description 商品实体类
 */
public class Items {
    private Integer id;
    private  String name;
    private Float price;
    private String detail;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Float getPrice() {
        return price;
    }

    public void setPrice(Float price) {
        this.price = price;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    @Override
    public String toString() {
        return "Items{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", detail='" + detail + '\'' +
                '}';
    }
}

接口

    /**
     * 多对多
     * @return
     */
    List<User> findUserByOrdersAndItems();

映射文件

<resultMap id="findUserByOrdersAndItems_map" type="user">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="address" property="address"/>
        <collection property="orders" ofType="orders">
            <id column="order_id" property="id"/>
            <result column="number" property="number"/>
            <result column="note" property="note"/>
            <result column="createtime" property="createtime"/>
            <collection property="ordersDetails" ofType="ordersDetails">
                <id column="orderdetailID" property="id"/>
                <result column="items_id" property="items_id"/>
                <result column="items_num" property="items_num"/>
                <association property="items" javaType="items">
                    <result column="name" property="name"/>
                    <result column="price" property="price"/>
                    <result column="detail" property="detail"/>
                </association>
            </collection>
        </collection>
    </resultMap>
    <select id="findUserByOrdersAndItems" resultMap="findUserByOrdersAndItems_map">
        SELECT
    u.id,
    u.username,
    u.address,
    o.id order_id,
    o.number,
    o.note,
    o.createtime,
    od.id orderdetailID,
    od.items_id,
    od.items_num,
    it.name,
    it.price,
    it.detail
FROM
    USER u,
    orders o,
    orderdetail od,
    items it
WHERE
    o.user_id = u.id
AND od.orders_id = o.id
AND it.id = od.items_id
    </select>

测试

package com.mybatis.test;


import com.mybatis.mapper.OrdersMapper;
import com.mybatis.mapper.UserMapper;
import com.mybatis.model.Orders;
import com.mybatis.model.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 多对所
 */
public class Demo19 {
    private static SqlSession sqlSession;

    static {
        // a)读取配置文件;
        InputStream is = null;
        try {
            is = Resources.getResourceAsStream("SqlMapConfig.xml");
            //b)通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            sqlSession = sqlSessionFactory.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userByOrdersAndItems = mapper.findUserByOrdersAndItems();
        System.out.println("用户数据为:"+userByOrdersAndItems);
    }


}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。