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

标签 java mapstruct

我正在尝试映射这个对象

public class Source {
  private String value1;
  private String value2;
  private String value3;
}

进入此对象

public class Target {
  private String targetValue1;
  private String targetValue2;
  private String targetValue3;
}

这是映射器定义。

@Mapper
public interface SourceMapper {
  void toTarget(Source source, @MappingTarget Target target);
}

我想要实现的目标是仅当 target 中的字段为 null< 时才将 source 中的字段映射到 target/。例如,当 target.targetValue1null 时,source.value1 仅映射到 target.targetValue1。如果它不为 null,则忽略该字段的映射。

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

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

最佳答案

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

关于java - 仅当目标字段为空时,MapStruct 将字段映射到目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59740439/

相关文章:

java.lang.ClassNotFoundException : Cannot find implementation for 异常

hibernate - 延迟加载在带有 Hibernate 的 JPA 中不起作用

java - 如何使用java流过滤 map 的 map

java - 如何禁用 MapStruct 中源映射中的字段?

spring - Mapstruct - 如何在 Generated Mapper 类中注入(inject) spring 依赖项

java - 使用 java 计算所有构成有效命令的子字符串

java - 强制mapstruct不调用has*方法

Java Mail api,消息处理期间连接丢失

java - 为什么volley类采用单例模式设计?

java - HSSFWorkbook java.lang.IllegalArgumentException : No more than 3 rules may be specified