С помощью Mapstruct, как я могу создать картограф, который будет автоматически отображать все поля, кроме одного (или двух, трех и т. Д.), Которые должны быть пропущены через некоторую пользовательскую логику отображения?
Mapper
@Mapper
public interface MyEntityMapper
{
MyEntityMapper INSTANCE = Mappers.getMapper(MyEntityMapper.class);
@Mappings(
{
@Mapping(source = "createdByPerson.id", target = "createdByPersonId"),
})
MyEventPayload toEventPayload(MyEntity entity);
}
Если у меня есть поле someString
, для которого нужно сначала выполнить какую-то настраиваемую запись сопоставления, как бы я это сделал? Я вижу эту опцию argument
для @Mapping
, но кажется немного сумасшедшим писать код Java в строке внутри аннотации!
Я надеялся сделать что-то вроде:
@MappingFor(MyEntity.class, "someString")
default String mapSomeString(String value) {
return value + " custom mapping ";
}
Обновление
Я нашел @AfterMapping
и использовал его, например .:
@AfterMapping
public void mapSomeString(MyEntity entity, MyEventPayload payload) {
// do fancy stuff here
}
Но мне все еще любопытно, можете ли вы предоставить функции для каждого поля после сопоставления / пользовательского сопоставления.