【问题标题】:Is there an option to configure mapstructs source property null checks?是否有配置 mapstructs 源属性空检查的选项?
【发布时间】:2021-05-06 13:30:29
【问题描述】:

我正在尝试将两个对象的信息映射到一个对象中。

@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 函数中接收 nulla 和 b 必须为 null。在我的情况下,如果 just a(不管 b)是 null,我还希望返回 null。而且我很确定也可能存在这样的用例,即希望在 至少一个 源对象为 null 时立即返回 null

有没有办法配置映射器、方法或注释源对象以实现这样的行为?

我已经尝试将 nullValueMappingStrategynullValueCheckStrategy 配置到 @Mapper- 和/或 @Mapping-Annotations。但是通过这些策略,我无法拆分源对象的空检查。

【问题讨论】:

    标签: java spring mapping mapstruct


    【解决方案1】:

    实现这一点的一种方法是,您可以在映射器中添加默认方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 2018-10-01
      • 2014-08-22
      • 2020-01-18
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多