Mybatis 多对多关系映射(二)

如图所示:

(1) 一个用户User可以有多个订单列表
(2) 一个订单Orders包括多个订单明细
(3)一条订单明细Orderdetail包括一条商品信息

查找用户购买的商品和订单及订单详情 

实体类:

//用户类
public class User {
    private int id;
    private String username;
    private Date birthday;
    private String gender;
    private String address;

    //    用户创建的订单列表
    private List<Orders> orders;

.......................
}


/**
 * 商品
 */
public class Items {
    private int id;
    private String name;
    private double price;
    private String detail;
    private String pic;
    private Date createtime;
..................
}

/**
 * 订单
 */
public class Orders {

    private int id;
    private int userid;  //数据库表的字段 user_id
    private String number;
    private Date createtime;
    private String note;

    //一个订单包括多个订单明细  setXXX and getXXX
    private List<OrdersDetail> ordersDetails;

   ....
}


/**
 * 订单明细
 */
public class OrdersDetail {
    private int id;
    private int ordersId;   //数据库表的字段 orders_id
    private int itemsId;  //数据库表的字段 items_id
    private int itemsNum;  //数据库表的字段 items_num
    //一条订单明细包括一条商品信息
    private Items item;
.......
}




 UserMapper接口:


public interface UserMapper {

    public List<User> findUserItemResultMap();
}

 

 UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--指定完整的路径-->
<mapper namespace="org.hlx.mapper.UserMapper">

    <resultMap id="UserItemResultMap" type="User">
        <!-- 配置映射的用户信息 ,如果是相同也是需要配置-->
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="gender" property="gender"/>
        <result column="birthday" property="birthday"/>
        <result column="address" property="address"/>

        <!-- 配置映射的订单信息  -->
        <collection property="orders" ofType="Orders" >
            <id column="id" property="id"/>
            <result column="user_id" property="userid"/>
            <result column="number" property="number"/>
            <result column="note" property="note"/>
            <result column="createtime" property="createtime"/>

            <!-- 配置映射的订单明细信息 -->
            <collection property="ordersDetails" ofType="OrdersDetail">
                <id column="id" property="id"/>
                <result column="items_id" property="itemsId"/>
                <result column="items_num" property="itemsNum"/>
                <result column="orders_id" property="ordersId"/>

                <!-- 配置映射的商品信息 -->
                <association property="item" javaType="Items">
                    <id column="id" property="id"/>
                    <result column="name" property="name"/>
                    <result column="price" property="price"/>
                    <result column="detail" property="detail"/>
                    <result column="createtime" property="createtime"/>
                </association>
            </collection>

        </collection>

    </resultMap>

    <select id="findUserItemResultMap" resultMap="UserItemResultMap">
          select
            orders.*,
            `user`.id,
            `user`.address,
            `user`.username,
            `user`.birthday,
            orderdetail.id id,
            orderdetail.orders_id,
            orderdetail.items_id,
            orderdetail.items_num,
            items.id ,
            items.name,
            items.price,
            items.detail
            from
            orders,
            `user`,
            orderdetail,
            items
            where
            orders.user_id=`user`.id AND orderdetail.orders_id=orders.id AND orderdetail.items_id = items.id

    </select>

</mapper>

测试:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值