仅当目标字段为空时,MapStruct 将字段映射到目标

Phu*_*ang 6 java mapstruct

我正在尝试映射这个对象

public class Source {
  private String value1;
  private String value2;
  private String value3;
}
Run Code Online (Sandbox Code Playgroud)

进入这个对象

public class Target {
  private String targetValue1;
  private String targetValue2;
  private String targetValue3;
}
Run Code Online (Sandbox Code Playgroud)

这是映射器的定义。

@Mapper
public interface SourceMapper {
  void toTarget(Source source, @MappingTarget Target target);
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标是仅当字段source为时才将target字段映射到。例如,仅映射到when is 。如果不是,则忽略该字段的映射。targetnullsource.value1target.targetValue1target.targetValue1nullnull

是否可以使用 MapStruct 而无需编写自定义代码?

编辑 我更改了 的字段名称,Target以明确 的名称Target可能/可能不匹配 中的字段名称Source

Mal*_*sor 3

我不认为这可以用mapstruct 来完成。如果您仍然想使用mapstruct,您可以忽略可能为空目标变量,并在设置目标变量时@Mapping (target =" propName ", ignore = true)自行决定使用方法。@AfterMapping

  • 通过使用“@AfterMapping”,我无论如何都必须手动执行检查和映射。这违背了使用 MapStruct 的目的。不幸的是 MapStruct 不支持这一点。感谢您的回复。 (4认同)