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

