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

MapStruct:当目标字段engine为null时如何忽略映射?

MapStruct忽略null字段映射的实现方案

要实现当CarDto的device字段为null时,忽略对Car的engine字段的映射更新,只需在@Mapping注解中添加nullValuePropertyMappingStrategy配置即可,这是MapStruct专门用于处理源字段为null时是否更新目标属性的策略。

单个字段精准配置

修改后的映射接口代码如下:

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;

@Mapper
public interface CarMapper {

    @Mapping(target = "engine", source = "device", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
    void updateCarFromDto(CarDto carDto, @MappingTarget Car car);
}

该配置的作用是:当carDto.device为null时,MapStruct不会执行该字段的赋值操作,Car对象中原有的engine值会被保留;若device存在有效值,则正常覆盖更新目标属性。

全局配置(所有字段生效)

如果需要让接口内所有映射方法都遵循“源字段为null则忽略更新”的规则,可以直接在@Mapper注解中设置全局策略:

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;

@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface CarMapper {

    @Mapping(target = "engine", source = "device")
    void updateCarFromDto(CarDto carDto, @MappingTarget Car car);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:08:14