Mapstruct映射enum名称到代码,反之亦然



具有具有各种枚举的Maapstruct映射接口和DTO。我有两个不同的枚举格式都是:

public enum TxAccTypeDto  {
FINANCE("Finance")
}
public enum TxStatusDto  {
PENDING("Pending"),
}
public enum TxStatusDto  {
PENDING("Pending"),
}
public enum ContactMethod {
TELEPHONE,

问题我有是从类型字符串(不是enum)的实体字段转换时,我如何得到正确的枚举使用和匹配上的代码(值在括号中)?

如果只使用一个enum,则可以使用this:

default TxAccTypeDto toEnum(final String code) {
return Arrays.stream(TxAccTypeDto.values()).filter(
testEnum -> testEnum.getCode().equals(code))
.findFirst()
.orElse(null);
}

但它显然不知道用参数String代码映射到的enum。我希望我能:

  1. 只需执行toEntity(from mdto)和toDto(fromStringCode, forDtoTypeAndFile)
  2. 只添加每个类型的代码,而不是每个源/目标

这篇文章有帮助:将自定义方法映射器映射到Mapstruct

但是表示指定限定符/单个映射。希望它按类型来做,并一次描述映射。请注意,问题来自StringToEnum,两者都具有单个字符串参数,因此不合格

@Mappings({
@Mapping(source = "sourceAccountType", target = "sourceAccountType", qualifiedByName = "txAccTypeDto"),
@Mapping(source = "targetAccountType", target = "targetAccountType", qualifiedByName = "txAccTypeDto"),
@Mapping(source = "transactionStatus", target = "transactionStatus", qualifiedByName = "txStatusDto"),
})

相关内容

  • 没有找到相关文章

最新更新