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