1、引入依赖:mapstruct和lombok
<mapstruct.version>1.2.0.Final</mapstruct.version>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
2、将Student转化为StudentDTO
Student.java
@Data
public class Student {
private Long id;
private Integer age;
private String name;
private String home;
private Integer classId;
private Integer orderNum;
private Integer userType;
}
StudentDTO.java
@Data
public class StudentDTO {
private Long id;
private Integer age;
private String name;
private String home;
private Integer classId;
private Integer orderNum;
private EnumUserType userType;
}
StudentDTOMapper.java:
重点关注:MapStructUtils.class,这是自己写的需要将integer转为enum型
@Mapper(uses = MapStructUtils.class)
public interface StudentDTOMapper {
StudentDTOMapper INSTANCE = Mappers.getMapper(StudentDTOMapper.class);
StudentDTO do2dto(Student student);
List do2dtoList(List studentList);
@Mappings({
@Mapping(source = "userType.value", target = "userType"),
})
Student dtoTdo(StudentDTO dto);
}
MapStructUtils.java:
public class MapStructUtils {
public EnumUserType toEnumUserType(int value){
for(EnumUserType type : EnumUserType.values()){
if(type.getValue() == value)
return type;
}
return null;
}
}
3、测试:
@Test
public void test1(){
Student student = new Student();
student.setName(“zhangsan”);
student.setUserType(3);
StudentDTO dto = StudentDTOMapper.INSTANCE.do2dto(student);
System.out.println(dto);
StudentDTO test = new StudentDTO();
test.setName(“one”);
test.setUserType(EnumUserType.STUDENT);
Student student1 = StudentDTOMapper.INSTANCE.dtoTdo(test);
System.out.println(student1);
}