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

如何配置MapStruct忽略所有标注@JsonIgnore注解的Getter方法映射

解决方案

方案1:全局配置自动忽略@JsonIgnore标注的属性(推荐)

MapStruct 1.4及以上版本支持直接配置忽略指定注解标注的属性,你可以通过全局Mapper配置一次性对所有映射生效,无需逐个字段声明:

  1. 先定义全局Mapper配置类:
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.mapstruct.MapperConfig;
import org.mapstruct.ReportingPolicy;

@MapperConfig(
    componentModel = "spring",
    ignoreAnnotations = JsonIgnore.class, // 所有标注@JsonIgnore的属性自动忽略映射
    unmappedTargetPolicy = ReportingPolicy.IGNORE // 可选,未匹配的属性不报错,按需开启
)
public interface CommonMapperConfig {
}
  1. 你的业务Mapper直接引用这个配置即可:
@Mapper(config = CommonMapperConfig.class)
public interface MyMapper {
    MyEntity boToBo(MyEntity destination);
    void updateBo(MyEntity src, @MappingTarget MyEntity target);
}

这个配置生效后,所有被@JsonIgnore标注的Getter/Setter对应的属性都会自动跳过映射,完全符合你的需求。

方案2:指定忽略特定字段

如果只有少量父类方法需要忽略,不想全局配置,可以直接在Mapper级添加忽略规则,对当前Mapper下所有方法生效:

@Mapper(componentModel = "spring")
@Mapping(target = "changedProperties", ignore = true)
// 有其他需要忽略的字段可以继续加@Mapping注解
public interface MyMapper {
    MyEntity boToBo(MyEntity destination);
    void updateBo(MyEntity src, @MappingTarget MyEntity target);
}

注意事项

  • 确保你使用的MapStruct版本不低于1.4.0.Final,低版本对ignoreAnnotations的支持存在缺陷
  • 如果你的项目中同时存在需要映射的@JsonIgnore标注属性,可以优先选用方案2,避免全局配置影响正常逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:05