首页 > 解决方案 > 使用多个源值时,有没有办法为 Mapstruct 指定默认输入参数?

问题描述

所以在下面的例子中,我有 2 个输入对象,被映射到一个输出对象。大多数映射直接从一个输入到一个输出,只有一个来自另一个对象。

    @Mapping(source = "input.a" target = "output.a")
    @Mapping(source = "input.b" target = "output.b")
    @Mapping(source = "input.c" target = "output.c")
    @Mapping(source = "input.d" target = "output.d")
    @Mapping(source = "extra.a" target = "output.extraa")
    Output toOutputMapper(Input input, ExtraValues extra)

有没有办法说“将此对象用作默认值”,这可以节省我映射值并放弃 Mapstruct 提供的自动映射?

就像是:

    @Mapping(source = "extra.a" target = "output.extraa")
    Output toOutputMapper(@Default Input input, ExtraValues extra)

标签: javamapstruct

解决方案


使用 MapStruct 1.4 时,您可以使用映射到当前目标来实现您正在寻找的内容。

例如

    @Mapping(source = "input" target = ".")
    @Mapping(source = "extra.a" target = "output.extraa")
    Output toOutputMapper(Input input, ExtraValues extra)

推荐阅读