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

如何使用MapStruct实现仅映射指定字段的配置?

实现MapStruct仅映射明确指定的字段

嘿,刚好我之前也碰到过这个需求——不想一个个加ignore来排除字段,而是让MapStruct只处理我明确标注的映射规则,彻底关掉默认的同名自动映射。其实用MapStruct自带的配置就能轻松搞定,完全不用折腾自定义策略类。

核心方案:用@BeanMapping(ignoreByDefault = true)关闭默认映射

只需要在你的映射方法上加上这个注解,就能让MapStruct默认忽略所有字段的自动匹配,之后你只需要把需要映射的字段用@Mapping一一标注出来就行。

代码示例

先定义你的源类和目标类:

// 源对象
public class Source {
    private Long id;
    private String name;
    private String unusedField; // 这个字段我们不想映射
}

// 目标对象
public class Target {
    private Long id;
    private String name;
    private String extraField; // 这个字段也不需要被赋值
}

然后编写Mapper接口:

@Mapper(componentModel = "spring") // 按需选择组件模型,比如spring、cdi等
public interface SourceTargetMapper {

    // 关键:ignoreByDefault = true 关闭默认同名映射
    @BeanMapping(ignoreByDefault = true)
    // 只明确指定需要映射的字段
    @Mapping(target = "id", source = "id")
    @Mapping(target = "name", source = "name")
    Target convertToTarget(Source source);
}

效果说明

这样配置后,MapStruct只会生成id和name的映射代码,其他所有未被@Mapping标注的字段都会被自动忽略,完全符合你想要的“仅映射指定字段”的策略。之后如果需要新增映射字段,只需要添加对应的@Mapping注解即可,比一个个加ignore高效太多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:25:09