BeforeMappingとAfterMappingでマッピング前後の処理を追加できる。
環境
Mapperの作成
@Mapper public abstract class PersonMapper { @BeforeMapping protected void before(PersonEntity entity) { entity.setName("BEFORE_" + entity.getName()); } @AfterMapping protected void after(@MappingTarget Person person) { person.setName(person.getName() + "_AFTER"); } public abstract Person toPerson(PersonEntity entity); }
生成されたMapper
/* @Generated( value = "org.mapstruct.ap.MappingProcessor", date = "2018-04-02T22:00:38+0900", comments = "version: 1.2.0.Final, compiler: javac, environment: Java 9.0.1 (Oracle Corporation)" ) */ public class PersonMapperImpl extends PersonMapper { @Override public Person toPerson(PersonEntity entity) { before( entity ); if ( entity == null ) { return null; } Person person = new Person(); person.setName( entity.getName() ); person.setAge( entity.getAge() ); after( person ); return person; } }
テストコード
@Test public void test() { PersonEntity entity = new PersonEntity(); entity.setName("curry"); PersonMapper mapper = Mappers.getMapper(PersonMapper.class); Person person = mapper.toPerson(entity); assertThat(person.getName()).isEqualTo("BEFORE_curry_AFTER"); }