mybatis使用resultMap实现多对多查询 (需求:商品信息和订单明细有多对多的关系)

xiaoxiao2021-02-28  46

因为商品信息和订单明细有外键关联,

在订单明细po类添加商品信息属性

public class Orderdetail { private int id; private int orders_id; private int item_id; private int item_num; private Float item_price; //商品的信息 private Items items;

目标:resultMap将订单明细映射到orders.java中的List<Orderdetail> orderdetails,将商品信息映射到Orderdetail.java中商品属性中(Items items)

Mapper.xml

1.定义resultMap

<!-- 多对多映射 --> <resultMap type="orders" id="manytomany" > <collection property="orderdetail" ofType="com.mo.pojo.Orderdetail"> <!-- 订单明细 与 商品信息 进行 多对多 的映射 column:字段名 property:po类属性 id:唯一的字段,一般为主键 result:普通字段 --> <id column="orderdetail_id" property="id"/> <result column="item_id" property="item_id"/> <result column="item_num" property="item_num"/> <result column="item_price" property="item_price"/> <!-- 映射商品信息,单个po类,collection集合中一个元素的一个属性 --> <association property="items" javaType="com.mo.pojo.Items"> <id column="item_id" property="id"/> <result column="item_name" property="item_name"/> <result column="item_price_price" property="item_price"/> <result column="item_detail" property="item_detail"/> </association> </collection> </resultMap>

2.statement编写

<select id="manytomany" resultMap="manytomany"> SELECT orders.*, orderdetail.id orderdetail_id, orderdetail.item_id, orderdetail.item_num, orderdetail.item_price, items.item_name, items.item_price item_price_price, items.item_detail FROM orders, orderdetail, items WHERE orders.id = orderdetail.orders_id AND orderdetail.item_id = items.id </select> 3.Mapper.java的编写

public interface OrdersMapperCustom { List<Orders> manytomany(); }

结果

转载请注明原文地址: https://www.6miu.com/read-74588.html

最新回复(0)