1

我正在使用 mapstrcut 将我的实体映射到 dto,我现在面临一个问题,即在 DTO 中有一个额外的字段是“折扣”,我需要 mapstruct 来管理填充这个字段,这个字段是根据 2 计算的值(销售价格和零售价格)。

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

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

当我尝试添加这一行时,构建时的代码中断说:

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

那么我该如何做这样的映射呢?

4

1 回答 1

6

您可以在以下情况下使用Java 表达式的功能:

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

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

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

于 2016-07-06T13:37:07.963 回答