问题描述
我希望在mapper类级别定义一个策略,该策略表示如果未映射枚举值,则将其映射为null。
就像我会在方法级别上写一样:
@ValueMapping( source = MappingConstants.ANY_REMAINING,target = MappingConstants.NULL )
因此它适用于mapstruct自动生成的所有子映射方法,而不必强迫我声明所有这些子映射方法只是为了添加此行。
解决方法
为您的枚举创建一个“类”映射器,然后将其用于具有uses
批注的@Mapper
属性的其他映射器中。
例如:
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