【问题标题】:MapStruct Is there a way to define defaut enum strategy for unknown value at class level?MapStruct 有没有办法在类级别为未知值定义默认枚举策略?
【发布时间】:2020-09-08 21:52:44
【问题描述】:

我希望在映射器类级别定义一个策略,如果枚举值未映射,则将其映射为 null。

就像我在方法级别写的一样:

    @ValueMapping( source = MappingConstants.ANY_REMAINING, target = MappingConstants.NULL )

这样它就适用于mapstruct自动生成的所有子映射方法,而不是强迫我声明所有这些方法只是为了添加这一行。

【问题讨论】:

    标签: java mapstruct


    【解决方案1】:

    为您的枚举创建一个“类”映射器,然后在具有@Mapper 注释的uses 属性的其他映射器中使用它。

    例如:

    public interface MyEnumMapper {
    
        @ValueMapping( source = MappingConstants.ANY_REMAINING, target = MappingConstants.NULL )
        public String asString(MyEnum myenum);
    }
    

    然后使用它

    @Mapper(uses=MyEnumMapper.class)
    public class CarMapper {
    
        CarDto carToCarDto(Car car);
    }
    

    (假设Car 对象具有MyEnum 类型的属性)

    在此处查看完整文档:https://mapstruct.org/documentation/stable/reference/html/#invoking-other-mappers

    【讨论】:

    • 谢谢,但我正在寻找一种方法,不必为每个枚举声明一个方法,只是说如果找不到就映射到 null。您的回答只是让我将声明移至子类。
    猜你喜欢
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多