猿问

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",我不想zzz覆盖asdf。


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


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


森林海
浏览 646回答 1
1回答

慕虎7371278

我们目前正在讨论这个问题。有一个PR待定。留意那个。对于 BeanMappings,所有当前策略都适用于 BeanMapping 级别,而不是属性级别。因此,NullValueMappingStrategy 会告诉您当输入 bean(或 Map,或 MapMapping、IterableMapping 中的 List)为空时会发生什么。有(直到很快)没有你正在寻找的东西。
随时随地看视频慕课网APP

相关分类

Java
我要回答