Mapstruct 更新值而不覆盖
Mapstruct to update values without overwriting
有没有办法指示 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"
,我不希望 zzz
覆盖 [=16] =].
注意:我不想总是忽略值,我只是不想在它们存在时覆盖它们。
我试图查看这里的几种映射策略:http://mapstruct.org/documentation/stable/reference/html/ 但其中 none 似乎适合。
我们目前正在讨论这个问题。有一个 PR 待处理。留意那个。对于BeanMappings,目前所有的策略都适用于BeanMapping层面,而不是属性层面。因此,NullValueMappingStrategy 告诉您当输入 bean(或 Map,或 MapMapping 中的 List,IterableMapping)为 null 时会发生什么。没有(直到不久)您正在寻找的东西。