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

xiaoxiao2021-02-28  70

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

转载请注明原文地址: https://www.6miu.com/read-74718.html

最新回复(0)