MapStruct 自动忽略未映射的属性

MapStruct ignore automatically unmapped properties

我在我的代码中将 MapStruct 与在不同业务用例之间共享的大模型(超过 50 个字段)一起使用。根据入口点,一些属性将被映射,而另一些则不会。当我构建我的项目时,我总是会收到 "WARNING: Unmapped target properties" 消息。

我研究过并发现可以通过使用语义

告诉 mapstruct 忽略该字段
@Mapping(target = "propName", ignore = true)

问题是,鉴于我的对象有这么多字段,忽略每个映射器 class 中的每个 属性 需要大量代码。我也不希望我的日志中出现此警告。有没有办法告诉 mapstruct 忽略未映射的内容,避免出现此消息?

您可以在 @Mapper 级别或通过 @MapperConfig 设置 "unmapped target policy" 以在多个映射器之间共享设置:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MyMapper {}

忽略自动映射 MapStruct 1.3.0.Final 参考指南:

By means of the @BeanMapping(ignoreByDefault = true) the default behavior will be explicit mapping, meaning that all mappings have to be specified by means of the @Mapping and no warnings will be issued on missing target properties.

@BeanMapping(ignoreByDefault = true)
OneObj map(TwoObj two);