防止 MapStruct 中的空检查

Prevent Null Check in MapStruct

映射器

@Mapping(target="subjectName", source="courseName")
Target map(Source source);

MapStruct 生成方法

public Target map(Source source) {
        if ( source == null ) {
            return null;
        }
        Target target = new Target();
        target.setSubjectName( source.getCourseName() );
        return target;
    }

现在,我的要求是防止在 MapStruct 生成的方法中对 source 进行空检查。如何实现?

目前实现该目标的唯一方法是定义您自己的自定义 public Target map(Source source) 方法。 MapStruct 已经有一个未解决的问题来支持 @Nullable@NonNull 注释,但仍然没有完成。

@Mapping(target="subjectName", source="courseName",qualifiedByName = "yourCustomMethod")
Target map(Source source);

@Named("yourCustomMethod")
default Target yourCustomMethod(Source source){
if ( source == null ) {
        return null;
    }
    Target target = new Target();
    target.setSubjectName( source.getCourseName() );
    return target;
}

我称之为从编译器复制:D