Как можно условно сопоставить свойства с помощью MapStruct 1.2?JAVA

Программисты JAVA общаются здесь
Anonymous
Как можно условно сопоставить свойства с помощью MapStruct 1.2?

Сообщение Anonymous »

Можно ли с помощью MapStruct 1.2 сопоставить исходное свойство с определенным значением с определенным другим значением в целевом объекте?

Я думаю примерно так:< /p>

Код: Выделить всё

public abstract class JiraKpmMapper {
@Mappings({
@Mapping(source = "mySource.propA", target = "myTarget.propX")
})
@ValueMappings({
@ValueMapping(source = "ABC", target = "XYZ"),
@ValueMapping(source = "123", target = "789")
})
public abstract MyTarget source2Target(final MySource mySource);

}
Таким образом, когда MapStruct во время сопоставления видит, что mySource.propA имеет значение «ABC», для myTarget.propX необходимо установить значение «XYZ» и т. д.

Точнее, мне даже хочется чего-то более проработанного:
Целью должен быть класс, в котором есть три свойства, в которых результирующее целевое значение должно быть разбито на .
Например, если mySource.propA имеет значение «ABC», целевой myTarget должен получить значение типа «V01.123.456.AB». Это значение, в свою очередь, должно быть разделено на preValue, middleValue и endValue:

preValue = "V01"

middleValue = "123.456"

endValue = "AB"

при этом нет свойства, содержащего полную строка результата.

Вот почему я уже написал собственный картограф и говорю MyMapper использовать его через

Код: Выделить всё

@Mapper(componentModel = "spring", uses = MyCustomMapper.class)
Пока это работает, но я не могу добиться этого, чтобы указать MyCustomMapper поместить «V01.123.456.AB» в цель, когда souzrce поставляется с «ABC». .

Подробнее здесь: https://stackoverflow.com/questions/490 ... struct-1-2

Вернуться в «JAVA»