地图结构忽略自动取消映射的属性

2022-09-01 06:32:08

我正在使用MapStruct,在我的代码中,在不同的业务用例之间共享大型模型(超过50个字段)。根据入口点的不同,某些属性将被映射,而某些属性则不会。当我构建我的项目时,我将始终收到“警告:未映射的目标属性”消息。

我已经研究并看到,通过使用语义来告诉mapstruct忽略字段是可能的。

@Mapping(target = "propName", ignore = true)

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


答案 1

您可以在关卡上设置“未映射的目标策略”,也可以通过在多个映射器之间共享设置:@Mapper@MapperConfig

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

答案 2

对于忽略自动映射 MapStruct 1.3.0.Final Reference Guide:

通过@BeanMapping(ignoreByDefault = true),默认行为将是显式映射,这意味着所有映射都必须通过@Mapping来指定,并且不会对缺少的目标属性发出警告。

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

推荐