注意:为entity添加setter和getter方法
dependencies
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.2.0.Final</version>
</dependency>
SimplePersonConverter
- 属性名相同时可以省略@Mapping
- 属性名不同时需要@Mapping
- constant可以注入常量
- defaultValue在source为null时注入
- qualifiedByName和Named注解配合注入
- enum类型可以通过string注入
@Mapper
public interface SimplePersonConverter {
SimplePersonConverter INSTANCE = Mappers.getMapper(SimplePersonConverter.class);
@Mappings({
@Mapping(target = "id", source = "id"),
@Mapping(target = "personName", source = "studentName"),
@Mapping(target = "age", constant = "18"),
@Mapping(target = "sex", source = "sex", defaultValue = "男"),
@Mapping(target = "personBook", source = "bookName", qualifiedByName = "convertBook"),
@Mapping(target = "personStatus", source = "studentStatus")
})
SimplePerson toSimplePerson(ComplexPerson source);
@Named("convertBook")
default PersonBook convert(String bookName) {
return new PersonBook(bookName);
}
}
ComplexPerson
public class ComplexPerson {
private Long id;
private String studentName;
private String sex;
private String bookName;
private String studentStatus;
}
SimplePerson
public class SimplePerson {
private Long id;
private String personName;
private Integer age;
private String sex;
private PersonBook personBook;
private PersonStatus personStatus;
}
PersonBook
public class PersonBook {
public PersonBook(String name) {
this.name = name;
}
private String name;
}
PersonStatus
public enum PersonStatus {
OFFLINE, ONLINE
}