我如何使用 ModelMapper 为相同的源和目标创建两种不同的映射方法

问题描述 投票:0回答:2

假设我有以下课程

class User {
   private String name:
   private Address address;
  // getters and setters
}

class UserDto {
   private String name:
   private Address address;
  // getters and setters
}

我已经创建了一个 modelMapper ,它允许我执行以下操作:

UserDto userDto = modelMapper.map(user, UserDto.class); // 这个映射函数将 User 类中的每个字段映射到 UserDto 类

我想创建一个 modelMapper,它允许我执行以下操作:

UserDto userDto = modelMapper.mapWithoutAddress(user, UserDto.class); // 这个映射函数将除了 User 类的地址之外的所有字段映射到 UserDto 类

注意:我正在使用 ModelMapper 单例,我在所有应用程序中使用相同的实例。

java modelmapper
2个回答
1
投票

正如文档所说,您可以跳过该属性。

modelMapper.typeMap(User.class, UserDto.class).addMappings(mapper -> mapper.skip(UserDto::setAddress));

0
投票

您可以为每个映射使用单独的类型映射,例如:

     UserDto userDto1 = Optional
    .ofNullable(modelMapper.getTypeMap(User.class, UserDto.class, "map1"))
    .orElseGet(() -> modelMapper.createTypeMap(User.class, UserDto.class,"map1")).map(model); //add custom mappings here


     UserDto userDto2 = Optional
    .ofNullable(modelMapper.getTypeMap(User.class, UserDto.class, "map2"))
    .orElseGet(() -> modelMapper.createTypeMap(User.class, UserDto.class,"map2")).map(model); //add another custom mappings here
© www.soinside.com 2019 - 2024. All rights reserved.