Mybatis 查詢一個對象包含多個子對象 (List 包含 List)


功能:查詢一個數據列表 且每個數據中包含各自的子數據集合

使用場景:1. 當需要查詢多訂單數據且同時訂單數據中需要包含訂單明細數據時

                 2. 當需要查詢多評論數據且同時評論數據中需要包含評論回復數據時

功能效果概述圖:

 

1. Dao 層定義

package com.ljw.dao;

import java.util.List;
import com.ljw.vo.Order;

public interface OrderMapper {
List<Order> findAllOrder();
}

 

2. Mybatis 配置

<!-- 實體類映射 -->
<resultMap type="cn.ljw.vo.Order" id="OrderMap">
<id column="order_id" jdbcType="INTEGER" property="orderId" />
<result column="order_number" jdbcType="VARCHAR" property="orderNumber" />
<result column="order_time" jdbcType="TIMESTAMP" property="orderTime" />
<collection property="orderDetails" ofType="cn.ljw.vo.OrderDetail" javaType="java.util.List">
<id column="detail_order_detail_id" jdbcType="INTEGER" property="orderDetailId" />
<result column="detail_order_id" jdbcType="INTEGER" property="orderId" />
<result column="detail_commodity_name" jdbcType="VARCHAR" property="commodityName" />
<result column="detail_commodity_number" jdbcType="INTEGER" property="commodityNumber" />
</collection>
</resultMap>

<!-- 查詢代碼 -->
<select id="findAllOrder" resultMap="OrderMap">
SELECT
order.order_id,
order.order_number,
order.order_time,
order_detail.order_detail_id AS detail_order_detail_id,
order_detail.order_id AS detail_order_id,
order_detail.commodity_name AS detail_commodity_name,
order_detail.commodity_number AS detail_commodity_number
FROM order
LEFT JOIN order_detail ON order.order_id = order_detail.order_id
</select>

 

3. po 實體類定義

/**
* 訂單表
*/
public class Order implements Serializable {
/**
* 訂單ID
*/
private Integer orderId;
/**
* 訂單編號
*/
private String orderNumber;
/**
* 訂單時間
*/
private Date orderTime;
/**
* 訂單明細集合
*/
private List<OrderDetail> orderDetails;

public Integer getOrderId() {
return orderId;
}
public void setOrderId(Integer orderId) {
this.orderId = orderId;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public Date getOrderTime() {
return orderTime;
}
public void setOrderTime(Date orderTime) {
this.orderTime = orderTime;
}
public List<OrderDetail> getOrderDetails() {
return orderDetails;
}
public void setOrderDetails(List<OrderDetail> orderDetails) {
this.orderDetails = orderDetails;
}
}



/** * 訂單明細表 */ public class OrderDetail implements Serializable { /** * 訂單明細ID */ private Integer orderDetailId; /** * 訂單ID */ private Integer orderId; /** * 商品名稱 */ private String commodityName; /** * 商品數量 */ private Integer commodityNumber; public Integer getOrderDetailId() { return orderDetailId; } public void setOrderDetailId(Integer orderDetailId) { this.orderDetailId = orderDetailId; } public Integer getOrderId() { return orderId; } public void setOrderId(Integer orderId) { this.orderId = orderId; } public String getCommodityName() { return commodityName; } public void setCommodityName(String commodityName) { this.commodityName = commodityName; } public Integer getCommodityNumber() { return commodityNumber; } public void setCommodityNumber(Integer commodityNumber) { this.commodityNumber = commodityNumber; } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM