使用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集合对象中