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, 凑合着看吧