You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自动生成的MapperImpl类返回实体而非null,如何修改为返回null?

解决MapStruct @MappingTarget方法输入为null时返回null的问题

针对你遇到的MapStruct自动生成的mapToPatch方法在输入input为null时返回patchEntity而非null的问题,可以通过以下方式解决:

  • 手动实现默认方法覆盖自动生成逻辑
    在你的Mapper接口中添加一个默认方法,先判断输入是否为null,再决定返回值;同时定义一个内部方法让MapStruct负责实际的映射操作:

    // 自定义默认方法,处理null输入的情况
    default PersonEntity mapToPatch(PersonInput input, @MappingTarget PersonEntity patchEntity) {
        if (input == null) {
            return null;
        }
        // 调用MapStruct自动生成的内部映射方法
        return mapToPatchInternal(input, patchEntity);
    }
    
    // 让MapStruct生成该方法,负责实际的属性映射
    PersonEntity mapToPatchInternal(PersonInput input, @MappingTarget PersonEntity patchEntity);
    

    这样MapStruct会自动生成mapToPatchInternal的实现代码,而对外暴露的mapToPatch方法会优先使用你定义的默认逻辑,当input为null时直接返回null。

  • 注意事项
    不要直接修改自动生成的MapperImpl类,因为重新编译后该类会被覆盖,所有手动修改都会丢失。通过在Mapper接口中定义默认方法的方式,既保留了MapStruct的自动映射能力,又自定义了null输入的处理逻辑。

内容的提问来源于stack exchange,提问作者Robby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:07:18