【发布时间】:2020-09-08 21:52:44
【问题描述】:
我希望在映射器类级别定义一个策略,如果枚举值未映射,则将其映射为 null。
就像我在方法级别写的一样:
@ValueMapping( source = MappingConstants.ANY_REMAINING, target = MappingConstants.NULL )
这样它就适用于mapstruct自动生成的所有子映射方法,而不是强迫我声明所有这些方法只是为了添加这一行。
【问题讨论】:
我希望在映射器类级别定义一个策略,如果枚举值未映射,则将其映射为 null。
就像我在方法级别写的一样:
@ValueMapping( source = MappingConstants.ANY_REMAINING, target = MappingConstants.NULL )
这样它就适用于mapstruct自动生成的所有子映射方法,而不是强迫我声明所有这些方法只是为了添加这一行。
【问题讨论】:
为您的枚举创建一个“类”映射器,然后在具有@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
【讨论】: