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

使用ModelMapper映射时如何为目标类指定字段设置固定值?

ModelMapper映射时设置目标类固定字段值的解决方案
  • 方案1:单次映射后手动赋值(仅个别场景需要设置固定值时推荐,无需修改全局配置)
    直接在原有映射逻辑后补充字段赋值即可,实现成本最低:

    @Autowired
    private ModelMapper modelMapper;
    modelMapper.map(userDto, user);
    // 手动设置固定值
    user.setMetaDatal("abc123");
    
  • 方案2:配置全局TypeMap(所有UserDto转User的场景都需要自动设置该固定值时推荐)
    在ModelMapper初始化配置中添加对应类型的映射规则,后续所有同类型转换都会自动应用该规则,原有映射代码无需修改:

    import org.modelmapper.ModelMapper;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class ModelMapperConfig {
        @Bean
        public ModelMapper modelMapper() {
            ModelMapper modelMapper = new ModelMapper();
            // 配置UserDto到User的映射规则
            modelMapper.typeMap(UserDto.class, User.class)
                    .addMappings(mapper -> mapper.using(ctx -> "abc123")
                            // 为metaDatal字段设置固定值
                            .map(UserDto::getName, User::setMetaDatal));
            return modelMapper;
        }
    }
    
  • 方案3:使用自定义Converter(部分场景需要设置固定值、不想影响全局映射规则时推荐)
    临时自定义转换逻辑,仅当前转换生效:

    // 自定义转换规则
    Converter<UserDto, User> userConverter = context -> {
        User targetUser = new User();
        modelMapper.map(context.getSource(), targetUser);
        targetUser.setMetaDatal("abc123");
        return targetUser;
    };
    // 执行转换
    User user = modelMapper.typeMap(UserDto.class, User.class)
            .setConverter(userConverter)
            .map(userDto);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 09:15:03