java - Mapstruct 更新值而不覆盖

标签 java spring spring-boot mapstruct

有没有办法指示 MapStruct 不覆盖目标中的值?

例如:

public interface IMyMapper {
    IMyMapper INSTANCE = Mappers.getMapper(IMyMapper.class);
    @Mappings({
            @Mapping(target = "foo", source = "source.FOO"),
            @Mapping(target = "bar", source = "source.BAR2"),
    })
    void updateTargetEntity(@MappingTarget MyTarget target , MySource source);
}

class MyTarget {
 String a;
 String b;
 ...
}

class MySource {
 String a;
 String b;
 ...
}

例如,target 将具有 a = "asdf",而 source 将具有 a = "zzz" code>,我不希望 zzz 覆盖 asdf

注意:我不想总是忽略值,我只是不想覆盖它们(如果存在)。

我尝试查看这里的几种映射策略:http://mapstruct.org/documentation/stable/reference/html/但似乎都不合适。

最佳答案

我们目前正在讨论这个问题。有一个PR待办的。留意那个。对于 BeanMappings,当前的所有策略都适用于 BeanMapping 级别,而不是属性级别。因此,NullValueMappingStrategy 告诉您当输入 bean(或 Map,或 MapMapping、IterableMapping 中的 List)为 null 时会发生什么。 (直到不久之前)还没有您正在寻找的东西。

关于java - Mapstruct 更新值而不覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755301/

相关文章:

java - 如何使用 JAXB 序列化和反序列化对象?

Android facebook 登录 Spring Social web 应用

java - 关于 Spring web.xml <context-param> 和 <listener> 标签的一些信息(引用一个 Hello World 示例)

java - Spring boot项目未加载资源

java - 如何捕获ConnectionException、UnknownHostException?

java - 修改 Java 中默认类加载器的行为

java - Play Framework - java.lang.RuntimeException : No main class detected

java - Spring Boot R2DBC 与 MySQL - 异常 : Table not found

java - 抛出 RuntimeException 会导致事务回滚,但 Spring Boot 应用程序中不会出现异常

java - 编辑时 THYMELEAF 不支持请求方法 'POST'