gpt4 book ai didi

mapstruct - 如何使用 Mapstruct 将枚举映射到字符串

转载 作者:行者123 更新时间:2023-12-05 02:32:39 36 4
gpt4 key购买 nike

我可以在我们有 String 到 Enum 映射的地方找到答案,但我找不到如何将 Enum 映射到 String。

public class Result {
Value enumValue;
}

public enum Value {
TEST,
NO TEST
}


public class Person {
String value;
}

我怎样才能映射这个?

我试过了:

@Mapping(target = "value", source = "enumValue", qualifiedByName = "mapValue")


@Named("mapValue")
default Person mapValue(final Value en) {
return Person.builder().value(en.name()).build();
}

最佳答案

mapstruct should support this out of the box.所以 @Mapping(target = "value", source = "enumValue") 应该足够了。

包含目标/源类的完整示例:


@Mapper
public interface EnumMapper {
@Mapping( target = "value", source = "enumValue" )
Person map(Result source);
}

class Result {
private Value enumValue;

public Value getEnumValue() {
return enumValue;
}

public void setEnumValue(Value enumValue) {
this.enumValue = enumValue;
}
}

enum Value {
TEST, NO_TEST
}

class Person {
private String value;

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}
}

这会产生以下生成的代码:

@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2022-02-20T12:33:00+0100",
comments = "version: 1.5.0.Beta2, compiler: Eclipse JDT (IDE) 1.4.50.v20210914-1429, environment: Java 17.0.1 (Azul Systems, Inc.)"
)
public class EnumMapperImpl implements EnumMapper {

@Override
public Person map(Result source) {
if ( source == null ) {
return null;
}

Person person = new Person();

if ( source.getEnumValue() != null ) {
person.setValue( source.getEnumValue().name() );
}

return person;
}
}

关于mapstruct - 如何使用 Mapstruct 将枚举映射到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71177673/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com