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);
我在我的代码中将 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);