#java #mapstruct
#java #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)
Ответ №1:
При использовании MapStruct 1.4 вы можете использовать сопоставление с текущей целью для достижения того, что вы ищете.
например
@Mapping(source = "input" target = ".")
@Mapping(source = "extra.a" target = "output.extraa")
Output toOutputMapper(Input input, ExtraValues extra)