案例:
有一个订单实体类,它里面引用了订单明细类(这里假设一个订单只对应一件商品)
@Data
public class OrderMaster {
/**订单id*/
private String orderId;
/**买家姓名*/
private String buyerName;
/**买家电话*/
private String buyerPhone;
/**买家地址*/
private String buyerAddress;
/**订单总金额*/
private BigDecimal orderAmount;
/**订单详情*/
OrderDetail orderDetail;
}
订单明细类如下:
@Data
public class OrderDetail {
/**订单详情id*/
private String detailId;
/**订单id*/
private String orderId;
/**商品价格*/
private BigDecimal productPrice;
/**商品数量*/
private Integer productQuantity;
}
现在我想在查询订单实体类的时候,附带把订单明细类也一并查出来。(以前的做法可能是先查询订单实体类,然后根据订单id去查询订单明细类)
方法:
<select id="queryByOrderId" resultType="Order">
<!--根据id查询Order并携带OrderDetail实体 -->
<!--如果告诉mybatis,把结果映射到Order的同时,也要映射到OrderDetail属性-->
select
a.orderId,
a.buyerName,
a.buyerPhone,
a.buyerAddress,
a.orderAmount,
b.detailId "orderDetail.detailId",
b.orderId "orderDetail.orderId",
b.productPrice "orderDetail.productPrice",
b.productQuantity "orderDetail.productQuantity"
from Order a
inner join OrderDetail b on a.orderId = b.orderId
where a.orderId = #{orderId}
</select>