mybatis使用resultMap实现一对多查询 (需求:查询订单以及订单明细)

本文介绍如何使用MyBatis的resultMap实现多表关联查询,并将订单及其明细信息映射到Java对象中。通过定义resultMap和SQL查询语句,可以方便地将查询结果映射到自定义的Java对象集合。

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

使用resultMap将查询出的订单明细信息映射Order,java的属性中


在Orders.java创建订单明细属性(一个集合对象,一订单对应多个订单明细)


public class Orders {
	private int id;//订单号
	private int user_id;//用户的id
	private String order_number;//订单号
	
	//用户的信息
	private User user;
	
	//订单明细
	private List<Orderdetail> orderdetails;


目标:将查询出的订单及订单明细映射到Orders类中,将明细信息(多个)映射到List中




Mapper.xml


定义resultMap


	
	<!-- 	
		一对多映射,根据订单查询订单明细出来
		extends:继承resultMap,如果是垮namespace,需要加上namespace名
		
	 -->
	<resultMap type="orders" id="ordersUserDetailResultMap" extends="ordersUserResultMap">
		<!--
			 映射订单的明细 
			collection:映射集合对象
			property:映射到那个po,输入全类名或者别名
			ofType:映射po的类型
			
		 -->
		<collection property="orderdetails" 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"/>
		</collection>
	</resultMap>


写statement

<!-- 一对多映射,根据订单查询订单明细 -->	
	<select id="findOrdersUserDetailList" resultMap="ordersUserDetailResultMap">
		SELECT 
			orders.*,
			USER.username,
			USER.address ,
			orderdetail.id orderdetail_id,
			orderdetail.item_id,
			orderdetail.item_num,
			orderdetail.item_price
		FROM
			orders,
			USER,
			orderdetail
		WHERE
			orders.user_id = USER.id 
			AND 
			orders.id = orderdetail.orders_id
	</select>



写Mapper.java

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


结果



使用resultMap就可以自定义 ,将查询结果映射到list集合对象中


使用resultType是无法将查询结果映射到一个list集合对象中








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值