我找不到答案,我认为这在MapStruct中是不可能的。我还是想问一下,也许我错过了什么。
我有一种映射方法,它采用两个源并映射到一个目标,比如
@Mapping(...)
@Mapping(...)
...
Target mapToTarget(SourceA a, SourceB b);
生成的代码执行以下null
检查以返回null
:
if (a == null && b == null) return null;
我想要
if (a == null || b == null) return null;
目前,我事先进行了筛选,这样就不会将null
作为输入。如果参数是null
,我希望跳过这一部分,简单地在映射器中返回null
。
MapStruct支持这一点吗?
附言:我们使用MapStruct 1.3.1
这在MapStruct中是不可能的。但是,您可以通过提供默认方法来实现这一点。
例如
@Mapper
public abstract class CustomerMapper {
public Target mapToTarget(SourceA a, SourceB b) {
if (a == null || b == null) {
return null;
}
return mapToTargetWithMapStruct(a, b);
}
@Named("ignore") // @Named in order for MapStruct not to consider this as a candidate
protected abstract mapToTargetWithMapStruct(SourceA a, SourceB b);
}