您的位置:首页 > 其它

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

2017-05-07 13:58 741 查看
因为商品信息和订单明细有外键关联,

在订单明细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();
}

结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐