自动生成的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
相关产品推荐
相关产品推荐

