Decoratorを使うことでマッピングをカスタマイズすることができる。
環境
Mapperの作成
@DecoratedWith
にDecoratorクラスを指定する。
@Mapper @DecoratedWith(PersonMapperDecorator.class) public interface PersonMapper { PersonMapper MAPPER = Mappers.getMapper(PersonMapper.class); Person toPerson(PersonEntity entity); }
Decoratorの作成
抽象クラスで作成する。 上記で作成したMapperを実装し、任意のメソッドをカスタマイズする。
public abstract class PersonMapperDecorator implements PersonMapper { private final PersonMapper delegate; public PersonMapperDecorator(PersonMapper delegate) { this.delegate = delegate; } @Override public Person toPerson(PersonEntity entity) { Person dto = delegate.toPerson(entity); dto.setName(dto.getName().toUpperCase()); return dto; } }
テスト
@Test public void test() { PersonEntity entity = new PersonEntity(); entity.setName("curry"); Person person = PersonMapper.MAPPER.toPerson(entity); assertThat(person.getName()).isEqualTo("CURRY"); }