实体类的属性映射怎么可以少了它?(四)

3.3、属性是枚举类型

实体类我们还是改用 UserEnum:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserEnum {
    private Integer id;
    private String name;
    private UserTypeEnum userTypeEnum;
}

被映射对象 UserVO5 改为:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserVO5 {
    private Integer id;
    private String name;
    private String type;
}

枚举对象是:

@Getter
@AllArgsConstructor
public enum UserTypeEnum {
    Java("000", "Java开发工程师"),
    DB("001", "数据库管理员"),
    LINUX("002", "Linux运维员");
    
    private String value;
    private String title;

}

那么我们定义的接口还是照常定义,不会受到它是枚举就有所变化:

    @Mapping(source = "userTypeEnum", target = "type")
    UserVO5 toConvertVO5(UserEnum source);

    UserEnum fromConvertEntity5(UserVO5 userVO5);

通过IDE的反编译功能查看编译后的实现类,编译后的结果是这样子的:

实体类的属性映射怎么可以少了它?(四)

很明显, mapstruct 通过枚举类型的内容,帮我们把枚举类型转换成字符串,并给type赋值,可谓是小心使得万年船啊。

看来这巧媳妇儿不仅仅优秀还心细啊……


文章中的所有例子已上传github:https://github.com/mmzsblog/mapstructDemo

上一篇:《Cisco VoIP(CVOICE)学习指南(第三版)》一导读


下一篇:Outlook无法启动一直显示“正在启动”的解决方法