Mapstruct 深层集合转换

Mapstruct 深层集合转换 例如: A模型内嵌了List< B > b B模型又内嵌了 List< C > c

那现在要将A下的B中的列表C 转成 D

A -> B列表 -> C列表 转换成 A->B列表->D列表

A模型

@Data
public class XmbInsuranceOrder
{
          
   
	/** 投保保单信息 **/
    private List<XmbInsuranceOrderApplication> orderApplications;
}

B模型

@Data
public class XmbInsuranceOrderApplication
{
          
   
	/** 被保人 */
    private List<XmbInsuranceOrderPolicyCustomer> xmbInsuranceOrderPolicyCustomerList;
}

C 模型

@Data
public class InsOrderApplicationVo
{
          
   
	/** 被保人 */
    private List<XmbInsuranceOrderPolicyCustomer> policyCustomer;
}

最终要把 xmbInsuranceOrderPolicyCustomerList 转换成 policyCustomer

方法: 多加入一层转换, 把 B模型 这层先转换出来 C模型来!!! 唯一的关键点

/**
     * 用户投保单 转 用户投保单订单详情Vo模型
     * @param xmbInsuranceOrder 投保订单
     * @return 用户投保单订单详情Vo模型
     */
    @Mappings({
          
   
            @Mapping(target = "productName", source="orderSequence.productName"),
            @Mapping(target = "companyName", source="orderSequence.companyName"),
            @Mapping(target = "brokerName", source="broker.realName")
    })
    InsOrderDetailVo toInsOrdersDetailVo(XmbInsuranceOrder xmbInsuranceOrder);

    /**
     * 主要是用来转换 toInsOrdersDetailVo 中 List<InsOrderApplicationVo> 中 的 policyCustomer
     *
     * 后台投保单申请列表被保人 转 后台投保单申请列表被保人Vo
     * @param xmbInsuranceOrderApplication 后台投保单申请列表
     * @return 后台投保单申请列表被保人Vo
     */
    @Mappings({
          
   
        @Mapping(target = "policyCustomer", source="xmbInsuranceOrderPolicyCustomerList"),
    })
    InsOrderApplicationVo toInsOrderApplicationVo(XmbInsuranceOrderApplication xmbInsuranceOrderApplication);

    /**
     * 后台投保单申请列表 转 后台投保单申请列表Vo
     * @param xmbInsuranceOrderApplications 后台投保单申请列表
     * @return 后台投保单申请列表Vo
     */
    List<InsOrderApplicationVo> toInsOrderApplicationVo(List<XmbInsuranceOrderApplication> xmbInsuranceOrderApplications);
经验分享 程序员 微信小程序 职场和发展