Mapstruct 深层集合转换

本文详细介绍了如何使用MapStruct进行深度转换,从A模型的List<XmbInsuranceOrderApplication>到B中的List<XmbInsuranceOrderPolicyCustomer>,进一步转换为C模型的List<InsOrderApplicationVo>,最终目标是生成D列表。关键在于通过多层映射处理复杂的层级结构。
摘要由CSDN通过智能技术生成

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);

作者尽力描述了, 暂时没时间做一个完整的Demo, 凑合着看吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值