我正在尝试从String值映射到与该字符串值不直接匹配的枚举(即String值为“ I”,并且我想将其映射到Enum值Industry.CREATOR)我没有看到mapstruct中的任何事情都可以做到这一点。
我希望它生成类似以下内容的
switch (entityInd) {
case "I":
return Industry.CREATOR;
case "E":
return Industry.CONSUMER;
default:
return null;
}
答案 0 :(得分:2)
使行业枚举丰富了代码字段,并添加了静态方法,该方法遍历枚举值并返回具有给定代码的枚举值
enum Industry {
CREATOR("I")/*, here comes more values of the enum*/;
private String code;
Industry(String code) {
this.code = code;
}
public static Industry forCode(String code) {
return Arrays.stream(Industry.values())
.filter(industry -> industry.code.equals(code))
.findAny()
.orElse(null);
}
}
对于用法,应该定义Mapper
,并且在映射器中,应调用'Industry#forCode`方法
Industry industry = Industry.forCode("I");
Quick Guide to MapStruct文章的第6节详细介绍了如何使用Mapper