【MapStruct】Expression を使う
Expressionを使うことで、任意のJavaコードをマッピングの際に実行できる。
環境
Mapperの作成
expression
に実行したいJavaコードを記述する。その際、 java()
で囲む。
@Mapper public interface ExpressionMapper { ExpressionMapper MAPPER = Mappers.getMapper(ExpressionMapper.class); @Mapping(target = "name", expression = "java(org.springframework.util.StringUtils.capitalize(entity.getName()))") Student toStudent(StudentEntity entity); }
テストコード
@Test public void test() { StudentEntity entity = new StudentEntity(); entity.setName("curry"); Student student = ExpressionMapper.MAPPER.toStudent(entity); assertThat(student.getName()).isEqualTo("Curry"); }
expression
にパッケージ名から記述したくない場合は、 imports
を使用して省略することができる。
@Mapper(imports = StringUtils.class) public interface ExpressionMapper { @Mapping(target = "name", expression = "java(StringUtils.capitalize(entity.getName()))") Student toStudent(StudentEntity entity); }