代码之家  ›  专栏  ›  技术社区  ›  tryingHard

Mapstruct可选映射

  •  0
  • tryingHard  · 技术社区  · 7 年前

    我想知道怎么才能改变这个 mapping 使用 mapstruct 以避免nullPointer异常。 rep.getClientLevelType() 可以为空,也可以为空 DIRECT RELATED fromValue 执行时间 null empty.string 我不知道该怎么做,只有在 使用时不为null 映射结构 .

    @Mapping(target = "clientLevelType", expression = "java(ClientLevelType.fromValue(rep.getClientLevelType()))")
    

    从wsdl生成的枚举文档:

    @XmlType(name = "ClientLevelType")
    @XmlEnum
    public enum ClientLevelType {
    
        DIRECT,
        RELATED;
    
        public String value() {
            return name();
        }
    
        public static ClientLevelType fromValue(String v) {
            return valueOf(v);
        }    
    }
    

    WSDL :

       <xs:simpleType name="ClientLevelType">
            <xs:restriction base="xs:string">
                <xs:enumeration value="DIRECT"/>
                <xs:enumeration value="RELATED"/>
            </xs:restriction>
        </xs:simpleType>
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   M. Deinum    7 年前

    转换 String enum 可以通过mapstruct隐式完成,请参见 implicit type conversions 在文档中。

    expression 只需添加 source 或者,当字段的名称匹配时,您甚至可以省略这些字段,然后MapStruct将自动检测映射。