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

Mapstruct是否仅自动映射源与目标对象共有的属性?

MapStruct 自动映射规则答疑:仅处理源与目标共有的属性?

是的,MapStruct 的默认自动映射规则就是仅对同时存在于源对象和目标对象中、属性名称与类型完全匹配的字段进行映射。

结合你的代码场景来看:

  • 源对象Obj1包含val1、val2两个属性,目标对象Obj2仅定义了val1
  • MapStruct 在生成Object1Mapper的实现类时,只会识别到val1是两者共有的同名同类型属性,因此仅会生成对Obj2.val1的赋值逻辑;而Obj1.val2因为在Obj2中没有对应的属性,所以不会被处理,这就是你最终输出Obj2(val1=aa)的原因。

如果需要映射名称不同的属性,你可以通过@Mapping注解手动指定映射关系,示例如下:

@Mapper
public interface Object1Mapper {

    Object1Mapper INSTANCE = Mappers.getMapper(Object1Mapper.class);

    @Mapping(source = "val2", target = "newVal") // 手动指定源属性val2映射到目标属性newVal
    Obj2 obj1ToObj2(Obj1 obj1);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:15:42