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
相关产品推荐
相关产品推荐

