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

本文介绍如何在MyBatis中实现订单详情与商品信息的多对多关联映射,通过定义resultMap及SQL查询语句,将商品信息嵌入到订单详情对象中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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


结果







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值