mapstruct使用中将Integer的type转为enum型的type

1、引入依赖:mapstruct和lombok

<mapstruct.version>1.2.0.Final</mapstruct.version>

org.mapstruct mapstruct-jdk8 ${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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值