Mybatis之collection標簽嵌套查詢(select)的寫法


業務:查詢一種商品,展示該商品多種規格。

GroupDetailsVo :

package com.community.api.vo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import lombok.Data;


/**
* 團購詳情vo
*
* @author admin
* @date 2019 -11-20 15:29:51
*/
@Data
public class GroupDetailsVo implements Serializable{

private Long groupById;

/**
* 團購狀態 2:未開始 3:團購中 4:已結束
*/
private Byte groupBuyStatus;

/**
* 主圖
*/
private String mainPicture;

/**
* 商品名稱
*/
private String name;

/**
* 詳情
*/
private String content;

/**
* 配送方式 1:自提 2:上門
*/
private String deliveryType;

/**
*滿額免費配送
*/
private BigDecimal freeDeliveryPrice;

/**
*已賣總數量
*/
private Integer sellNumber;

/**
* 原價
*/
private BigDecimal originalPrice;

/**
* 團購價
*/
private BigDecimal groupByPrice;

/**
* 開始時間
*/
private Date startTime;

/**
*
* 結束時間
*/
private Date endTime;

/**
* 單、多規格詳情vo
*/
private List<StandardDetailsVo> standardDetailsVos;

}


StandardDetailsVo :

package com.community.api.vo;

import java.io.Serializable;

import lombok.Data;


/**
* 單、多規格詳情vo
*
* @author admin
* @date 2019 -11-25 09:36:39
*/
@Data
public class StandardDetailsVo implements Serializable{

/**
* 規格id
*/
private Long standardId;

/**
* 規格名稱
*/
private String standardName;

}


接口名:

/**
* 獲取團購詳情
* @param groupBuyId
* @return
* @author admin
* @date 2019 -11-21 17:05:20
*/
List<GroupDetailsVo> getGroupDetails (@Param("groupBuyId")Long groupBuyId);

mapper:

//collection標簽內的select為本mapper內的方法名、column為查詢條件的列名、property為實體類List名字,見上面實體類<單、多規格詳情vo>字段名字。
<resultMap id="StandardResultMap" type="com.community.api.vo.GroupDetailsVo">
<result column="group_buy_status" property="groupBuyStatus"/>
<result column="name" property="name"/>
<result column="main_picture" property="mainPicture"/>
<result column="content" property="content"/>
<result column="delivery_type" property="deliveryType"/>
<result column="free_delivery_price" property="freeDeliveryPrice"/>
<result column="start_time" property="startTime"/>
<result column="end_time" property="endTime"/>
<result column="group_by_id" property="groupById"/>
<result column="sell_number" property="sellNumber"/>
<result column="original_price" property="originalPrice"/>
<result column="group_by_price" property="groupByPrice"/>
<collection property="standardDetailsVos" column="group_by_id" javaType="ArrayList"
ofType="com.community.api.vo.StandardDetailsVo" select="getStandardId" />
</resultMap>

<!--獲取團購詳情-->
<select id="getGroupDetails" resultMap="StandardResultMap">
SELECT
ANY_VALUE(a.group_buy_status) AS group_buy_status,
ANY_VALUE(a.name) AS `name`,
ANY_VALUE(a.main_picture) AS main_picture,
ANY_VALUE(a.content) AS content,
ANY_VALUE(a.delivery_type) AS delivery_type,
ANY_VALUE(a.free_delivery_price) AS free_delivery_price,
ANY_VALUE(a.start_time) AS start_time,
ANY_VALUE(a.end_time) AS end_time,
ANY_VALUE(gbs.group_by_id) AS group_by_id,
ANY_VALUE(SUM(gbs.sell_number)) AS sell_number,
ANY_VALUE(MIN(gbs.original_price)) AS original_price,
ANY_VALUE(MIN(gbs.group_by_price)) AS group_by_price,
ANY_VALUE(gbs.standard_id) AS standard_id,
ANY_VALUE(gbs.standard_name) AS standard_name
FROM
group_buy a
LEFT JOIN group_buy_standard gbs ON a.group_buy_id = gbs.group_by_id
WHERE gbs.group_by_id = #{groupBuyId}
GROUP BY gbs.group_by_id
</select>

<!--collection嵌套查詢規格信息-->
<select id="getStandardId" resultMap="StandardIdMap" parameterType="java.lang.Long" >
SELECT
standard_id,
standard_name
FROM group_buy_standard
WHERE group_by_id = #{groupBuyId}
</select>
————————————————
版權聲明:本文為CSDN博主「菜鳥驛站ㅤ」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_39629277/java/article/details/103310917


免責聲明!

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



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