需求
- 两张表:一张是订单表(torder_master),里面包含订单号、产品提供商等信息;另一张表是商品详情表(torder_detail),记录了订单中的使用者下单后账单中的产品分类、型号等信息。
- 需要我们通过提供订单号来查询到订单表中的订单号、买家名、买家部门和供应商名,通过级联查询查出与当前订单相关联的详细商品信息(包括id、订单id(外键)、商品分类和商品名)
思路
- 分为两步,首先通过提供的订单号将订单表中的信息全部查出来,然后封装需要的信息至相关实体的属性中;其次在封装过程中通过id查询商品详情表中的相关信息,封装至定义的List属性中。
实现
public class OrderDetail {
private int id;
private int fmasterid;
private String fclassification;
private String fgoodname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getFmasterid() {
return fmasterid;
}
public void setFmasterid(int fmasterid) {
this.fmasterid = fmasterid;
}
public String getFclassification() {
return fclassification;
}
public void setFclassification(String fclassification) {
this.fclassification = fclassification;
}
public String getFgoodname() {
return fgoodname;
}
public void setFgoodname(String fgoodname) {
this.fgoodname = fgoodname;
}
@Override
public String toString() {
return "OrderDetail{" +
"id=" + id +
", fmasterid=" + fmasterid +
", fgoocode='" + fclassification + '\'' +
", fgoodname='" + fgoodname + '\'' +
'}';
}
}
- 其次在已有的OrderMasterDO类中增加需要查询的商品详情属性(相应的需要增加其set和get方法),代码如下:
@ApiModelProperty(value = "商品详情信息")
private List<OrderDetail> orderDetailList;
- 在OrderMasterMapper文件中添加接口,代码如下:
OrderMasterDO findDetailByOrderno(@Param("forderno")String forderno);
<resultMap id="orderDetailMap" type="com.ruijing.store.order.base.core.model.OrderMasterDO">
<id column="id" property="id"></id>
<result column="forderno" property="forderno"></result>
<result column="fbuyername" property="fbuyername"></result>
<result column="fbuydepartment" property="fbuydepartment"></result>
<result column="fsuppname" property="fsuppname"></result>
<collection property="orderDetailList" column="id" ofType="com.ruijing.store.order.base.minor.model.OrderDetail" select="selectOrderDetail" fetchType="lazy" >
</collection>
</resultMap>
<resultMap id="orderSomeInfo" type="com.ruijing.store.order.base.minor.model.OrderDetail">
<id column="id" property="id"></id>
<result column="fmasterid" property="fmasterid"></result>
<result column="fclassification" property="fclassification"></result>
<result column="fgoodname" property="fgoodname"></result>
</resultMap>
<select id="selectOrderDetail" resultMap="orderSomeInfo">
select * from torder_detail td where fmasterid=#{id}
</select>
<select id="findDetailByOrderno" parameterType="String" resultMap="orderDetailMap">
select * from torder_master tm where forderno=#{forderno};
</select>
@Test
public void test2(){
String forderNo = "DC201612042473001";
OrderMasterDO orderDetails = orderMasterMapper.findDetailByOrderno(forderNo);
System.out.println(orderDetails.getForderno());
System.out.println(orderDetails.getFbuyername());
System.out.println(orderDetails.getFbuydepartment());
System.out.println(orderDetails.getFsuppname());
for (OrderDetail orderDetail : orderDetails.getOrderDetailList()) {
System.out.println(orderDetail);
}