Mapstruct - 使用数学公式绘制字段(例如target =" x",source =" a + b")

时间:2016-07-06 13:18:00

标签: mapstruct

我正在使用mapstrcut将我的实体映射到dto,我现在面临一个问题,即在DTO中有一个额外的字段是" discount",我需要mapstruct来管理填充这个字段,此字段基于2个值(salePrice和retailPrice)计算。

我的问题是如何使用mapstruct进行这种映射。

@Mapping(target="discount", source="retailPrice-salePrice")

当我尝试添加此行代码时,构建时会显示:

 error: No property named "salePrice*retailPrice" exists in source parameter(s).
            @Mapping(source="salePrice*retailPrice", target="discount")

那我怎么做这样的映射?

1 个答案:

答案 0 :(得分:4)

您可以使用Java expressions的功能:

@Mapping( target="discount", expression="java( source.getRetailPrice() - source.getSalePrice()" )

给定的"表达"将按原样添加到生成的代码中。如果需要,您可以通过@Mapper#imports()向生成的类添加其他导入。

我们(非常模糊)计划支持这样的表达式的实际脚本语言,但我们还没有:)