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