ネストされた参照型クラスのマッピングメソッドがある場合は、自動的にネストしているクラスのマッピングでそのマッピングが使用される。
環境
Mapper
StudentにネストされているPersonのマッピングも定義する。
@Mapper public interface SampleMapper { SampleMapper MAPPER = Mappers.getMapper(SampleMapper.class); Student toStudent(StudentEntity entity); Person toPerson(PersonEntity entity); }
生成されたコード。 StudentのマッピングでPersonのマッピングが実行されている。
/* @Generated( value = "org.mapstruct.ap.MappingProcessor", date = "2018-03-10T15:38:16+0900", comments = "version: 1.2.0.Final, compiler: javac, environment: Java 9.0.1 (Oracle Corporation)" ) */ public class SampleMapperImpl implements SampleMapper { @Override public Student toStudent(StudentEntity entity) { if ( entity == null ) { return null; } Student student = new Student(); student.setPerson( toPerson( entity.getPerson() ) ); return student; } @Override public Person toPerson(PersonEntity entity) { if ( entity == null ) { return null; } Person person = new Person(); person.setName( entity.getName() ); return person; } }
テストコード
@Test public void test() { PersonEntity personEntity = new PersonEntity("マイケル"); StudentEntity entity = new StudentEntity(personEntity); Student student = SampleMapper.MAPPER.toStudent(entity); assertThat(student.getPerson().getName()).isEqualTo("マイケル"); }