Mybatis多对多关联映射实例

来源:互联网 发布:手机视频剪辑软件知乎 编辑:程序博客网 时间:2024/05/16 15:47

Mybatis多对多关联映射实例

需求:查询购买了商品的用户的信息和用户的订单信息以及订单的明细。

这句话有点绕,稍微捋一捋,假设天明在京东商城有过一次购物经历

这一次他买了三个旺仔小馒头和4瓶旺仔牛奶

现在的需求就是需要

(1)、查询出天明的信息

(2)、天明下的那个订单的信息

(3)以及订单里面购物清单的详细信息。

(4)、详细信息中商品的信息


关联思路:

将用户信息映射至user中
在user类中添加订单列表属性List<Orders>orderslist,将用户创建的订单映射至orderlist

在Order中添加订单明细列表属性List<OrderDetail>orderdetials,将订单明细映射到orderdetials中

在OrderDetial中添加items属性,将订单明细所对应的商品映射到Items中

sql语句

SELECT            o.id as orderId,            o.note,            o.createtime,            o.number,            o.user_id,            u.address,            u.sex,            u.username,            od.id AS orderdetail_id,            od.items_id AS itemsId,            od.items_num AS itemsNum,            od.orders_id AS ordersID,            i.createtime,            i.detail,            i.id AS itemID,            i.name AS itemName        FROM            USER u,            orders o,            orderdetail od,            items i        WHERE            o.user_id = u.id and o.id = od.orders_id AND od.items_id = i.id


mapper.xml

<!DOCTYPE mapper    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.hl.mybatis.first.mapper.OrdersCustomMapper">    <!-- 查询用户关联 查询订单和订单明细以及商品  ResultMap -->    <resultMap type="com.hl.myabtis.first.beas.User" id="ordersAndOrderdetailItemsResultMap">        <!-- 用户信息 -->        <id column="user_id" property="id"/>        <result column="address" property="address"/>        <result column="sex" property="sex"/>        <result column="username" property="username"/>        <!-- 订单信息             一个用户对应多个单        -->        <collection property="orderlist" ofType="com.hl.myabtis.first.beas.Orders">            <id column="orderId" property="id"/>            <result column="user_id" property="user_id"/>            <result column="number" property="number"/>            <result column="createtime" property="createtime"/>            <result column="note" property="note"/>                    <!-- 订单明细                一个订单对应多个订单明细             -->            <collection property="orderdetails" ofType="com.hl.myabtis.first.beas.Orderdetail">                <id column="orderdetail_id" property="id"/>                <result column="itemsId" property="items_id"/>                <result column="itemsNum" property="items_number"/>                <result column="ordersID" property="orders_id"/>                <!-- 商品信息                    一个订单明细对应一个商品信息                 -->                <association property="items" javaType="com.hl.myabtis.first.beas.Items">                    <id column="itemID" property="id"/>                    <result column="itemName" property="name"/>                    <result column="price" property="price"/>                    <result column="detail" property="detail"/>                    <result column="pic" property="pic"/>                    <result column="createtime" property="createtime"/>                </association>            </collection>        </collection>        <!-- 明细信息 -->        <!-- 商品信息 -->    </resultMap>    <!-- 查询订单关联 查询用户信息和订单明细以及商品  ResultMap映射-->    <select id="findOrdersAndOrderdetailAndItemsResultMap" resultMap="ordersAndOrderdetailItemsResultMap">        SELECT            o.id as orderId,            o.note,            o.createtime,            o.number,            o.user_id,            u.address,            u.sex,            u.username,            od.id AS orderdetail_id,            od.items_id AS itemsId,            od.items_num AS itemsNum,            od.orders_id AS ordersID,            i.createtime,            i.detail,            i.id AS itemID,            i.name AS itemName        FROM            USER u,            orders o,            orderdetail od,            items i        WHERE            o.user_id = u.id and o.id = od.orders_id AND od.items_id = i.id    </select>   </mapper>

层层嵌套,不要迷糊!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 顺丰快递寄件填错收件人地址怎么办 收快递电话换了怎么办 顺丰快递没人收怎么办 网购东西没收到怎么办 中通快递没收到怎么办 快递员不给验货怎么办 顺丰验货不要了怎么办 闲鱼买家掉包了怎么办 闲鱼正在退款中怎么办 拒收货物卖家拒绝退款怎么办 货物没问题淘宝卖家拒收怎么办 头发稀少长的慢怎么办 没满16岁怎么办银行卡 网上买东西手机号填错了怎么办 买东西电话号码填错了怎么办 淘宝联盟扣54分怎么办 联盟被扣54分怎么办 ofo押金退了余额怎么办 网购还没收货就已签收怎么办 理财公司倒闭分公司法人怎么办 公司让离职不想走怎么办 公司让离职自己不想走怎么办 小孩子有购物狂病怎么办 拉杆箱的轮子卡怎么办 想你了怎么办的英文 那现在怎么办 英文怎写 平安证券账号忘了怎么办 发现发票是假的怎么办 公司收到假发票入账了怎么办 手表皮带有汗味怎么办 利客来购物卡丢了怎么办 乐天玛特倒闭卡怎么办 lv皮带买长了怎么办 密袋鼠咬了人怎么办 lv皮带如果长了怎么办 天赐农场公众号进不去了怎么办 苹果删了订阅号怎么办 蚂蚁借呗没有自动扣款怎么办 有对方qq号名字怎么办 腾讯模拟器刺激现场注册上限怎么办 丹阳智慧人社登入密码忘了怎么办?