是否有配置mapstructs源属性空检查的选项?

9nvpjoqh  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(467)

我试图把两个物体的信息Map到一个物体上。

@Mapper(componentModel = "spring")
public abstract class FooMapper {

    // some @Mapping-Annotations
    public abstract TargetObject map(ObjectA a, ObjectB b);

}

mapstruct生成如下内容:

@Component
public class FooMapperImpl extends FooMapper {

    @Override
    public TargetObject map(ObjectA a, ObjectB b) {
        if ( a == null && b== null ) {
            return null;
        }

        // rest of the code

    }

}

因此,为了从map函数接收null,a和b必须为null。在我的例子中,如果a(不管b)为null,我也希望返回null。我很确定也有一些用例,其中一个希望在至少一个源对象为null时立即返回null。
有没有办法为这样的行为配置Map器、方法或注解源对象?
我已经尝试将nullvaluemappingstrategy和nullvaluecheckstrategy配置到@mapper和/或@mapping注解。但是使用这些策略,我无法分割源对象的空检查。

h9a6wy2h

h9a6wy2h1#

实现此目的的一种方法是,可以在Map器中添加默认方法,如下所示:

default TargetObject map(ObjectA a, ObjectB b){
     if ( a == null || b== null ) {
            return null;
     }else{
        // do your stuff..
     }
 }

相关问题