首次使用Mapstruct,由于不太熟练,写成了下面这样
@Mappings({
@Mapping(source = "orderFormLineList.productName", target = "serviceItems")
})
RepeatOrderPageResultTO toBeRepeatOrderPageResultTO(OrderFormBO orderFormBO);
以为可以这样写,后来爆错了
No property named “xxx“ exists in source parameter(s). Did you mean “empty“?
解决方法:
@Mapping(target = "serviceItems", expression = "java(convert2ServiceItems(orderFormBO.getOrderFormLineList()))")
exepression中可以自定义转化方法
于是我在接口里面写了convert2ServiceItems来转化集合
default List<String> convert2ServiceItems(List<OrderFormLineBO> orderFormLineBOList) {
return orderFormLineBOList.stream()
.map(OrderFormLineBO::getProductName)
.collect(Collectors.toList());
}
下面是mapstruct生成的实现类的转化:
repeatOrderPageResultTO.setServiceItems( convert2ServiceItems(orderFormBO.getOrderFormLineList()) );