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

ModelMapper如何将根对象属性赋值给下属列表的每个元素

ModelMapper 嵌套列表属性同步映射配置方案

适用场景

RootDTO转Root时,需将RootDTO顶层的foo属性同步赋值给嵌套elements列表中所有Element实例的foo属性,同时保留原有隐式映射能力。

最终配置代码

import org.modelmapper.ModelMapper;

public class MapperConfig {
    public static ModelMapper getModelMapper() {
        ModelMapper modelMapper = new ModelMapper();
        
        // 保留ElementDTO到Element的原生隐式映射,无需额外配置
        modelMapper.typeMap(ElementDTO.class, Element.class);
        
        // 配置RootDTO到Root的映射规则
        modelMapper.typeMap(RootDTO.class, Root.class)
                // 启用默认隐式映射,自动匹配所有字段名相同的属性
                .implicitMappings()
                // 追加后置映射逻辑,同步foo属性到嵌套列表
                .addMapping((rootDTO, root) -> {
                    if (rootDTO.getFoo() == null || root.getElements() == null) {
                        return;
                    }
                    root.getElements().forEach(element -> element.setFoo(rootDTO.getFoo()));
                });
        
        return modelMapper;
    }
}

使用方式

仅需单次调用映射方法即可完成全部转换:

RootDTO rootDTO = // 待转换的源对象
Root root = MapperConfig.getModelMapper().map(rootDTO, Root.class);

方案合规性验证

  • 新增属性无需修改映射代码:所有字段名匹配的属性依然走ModelMapper原生隐式映射逻辑,新增可匹配属性时不需要调整配置
  • 仅单次调用完成映射:不需要额外的二次转换、后处理工具类调用,仅需调用一次map方法

注意事项

该配置不会覆盖Element实例已映射的其他属性值,Element的bar属性依然会从对应ElementDTO自动映射,不受后置逻辑影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:27:01