【发布时间】:2020-05-23 18:56:20
【问题描述】:
Mapsturct 具有带有预定义属性的 @Mapping 注解
例如:@Mapping(source="", target="", qualifiedByName=""),如果我想添加另一个属性并使用它来计算逻辑怎么办
例如:@Mapping(source="", target="", qualifiedByName="" , version="")
我想将版本号传递给它,根据版本,它会从源设置目标。
我尝试创建自定义注释并在其中使用@Mapping,但没有帮助
@CustomMapping(version = "1.0", mapping = @Mapping(source = "", target = "", qualifiedByName=""))
【问题讨论】:
-
您能否提供一些映射代码的示例?根据版本,我不明白您的意思?
-
这将是我们从源映射到目标
@Mapping(source = "numberOfSeats", target = "seatCount") CarDto carToCarDto(Car car)的法线映射。在这个 @Mapping 注释中,我想添加一个版本字段,我们可以告诉我们这个映射是支持版本 1 还是版本 2,例如:@Mapping(source = "numberOfSeats", target = "seatCount", version=2)表示仅当版本为 2 而不是版本 = 1 时才映射此字段 -
我也在考虑创建另一个带有版本和映射属性的自定义注解,如果版本为 2,这个注解处理器将委托给 mapstruct 映射,但不知道如何做或实现这个..跨度>
-
怎么知道是版本1还是2?
-
让我们说它的定义像这样
@Mapping(source = "numberOfSeats", target = "seatCount", version=2),这个版本值将来自属性或请求,如果版本是 2 做这个映射,我可以使用qualifiedByName 或表达式来做,但希望扩展此映射注释或创建自定义注释如@CustomMapping(version = "1.0", mapping = @Mapping(source = "", target = "", qualifiedByName=""))来实现此目的。获得一些关于如何实现这一点的想法真的很有帮助
标签: java java-8 annotations mapstruct