- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 ModelMapper 将一些对象转换为复杂的 DTO,反之亦然。
尽管我试图理解文档,但我发现很难理解何时使用 Converter、Provider 或 AbstractConverter。
现在,例如,如果我想将字符串属性转换为目标 DTO 内的小 DTO,我将在抽象转换器内手动执行此操作。
例如:
dest.setAddressDTO(new AddressDTO(source.getStreet(), source.getNumber()));
这是正确的做法吗?我什么时候应该使用提供商?
如果我想设置带有条件的属性,我可以在转换器中使用 Conditional 还是只能在使用 PropertyMap 时使用?
此外,使用同一个 modelMapper 实例来转换几种不同类型的对象是否是一种好的做法?
提前致谢
最佳答案
处理此问题的正确方法是使用转换器。
例如,假设我想创建一个转换器来将 dto 转换为域对象。
所以首先你定义一个转换器:
private Converter companyDtoToCompany = new AbstractConverter<CompanyDto, Company>() {
@Override
protected Company convert(CompanyDto source) {
Company dest = new Company();
dest.setName(source.getName());
dest.setAddress(source.getAddress());
dest.setContactName(source.getContactName());
dest.setContactEmail(source.getContactEmail());
(...)
dest.setStatus(source.getStatus());
return dest;
}
};
然后在 configureMappings() 方法中将其添加到映射器中:
modelMapper = new ModelMapper();
// Using STRICT mode to prevent strange entities mappin
modelMapper.getConfiguration()
.setMatchingStrategy(MatchingStrategies.STRICT);
modelMapper.addConverter(companyDtoToCompany);
// modelMapper.addConverter(otherConverter);
}
最后,您只需为您可以在代码中使用的那些类型添加映射方法:
public Company convertCompanyReqDtoToCompany(CompanyDto dto, Class<Company> destinationType) {
return modelMapper.map(dto, destinationType);
}
关于java - ModelMapper - 转换器/抽象转换器与提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48628550/
我想映射到一个只有一个带有 3 个参数的构造函数的源目标。我收到以下错误: Failed to instantiate instance of destination com.novasol.book
我有 2 个对象: @Setter @Getter public class Agent { public int userID; public String name; pu
我正在尝试使用 modelmapper 将我的类映射到传入请求。 看起来 Date 无法在 modelmapper 中自动转换。 Converter org.modelmapper.internal.
我想在UserDTO之间映射和 User ,但不包括一个字段,比如 city .我该怎么做,因为我认为这种方法可行,但它不起作用: ModelMapper modelMapper = new Mode
我有一个结构如下的源对象: class SourceA { int www; SourceB sourceB; } class SourceB { int xxx; int yyy;
当我尝试通过枚举将源中的字符串映射到目标中的整数时。 ModelMapper 失败。 来源 public class Request { private String classificati
我正在尝试使用 ModelMapper 将一种对象类型映射到另一种对象类型。我在 PropertyMap 实现中定义了以下映射: map().getExtended().setIncludeMaskT
我想对我的一个实体进行部分更新,但如果一个属性为 null,则要更新的实体也会将该值设置为 null。我希望如果源中的某个属性为 null,则保留源中的属性。 我已经尝试过,但没有运气: @B
我有以下 DTO 和 VO: 话音 public class ProjectVO { private Date fechaInicio; private Date fechaFin;
我正在尝试将字符串转换为日期,但转换器似乎没有被触发,并且我收到了 MappingException。这是我的代码: @Bean public ModelMapper modelMap
假设我有类 MySource: public class MySource { public String fieldA; public String fieldB; publ
当我尝试通过枚举将源中的字符串映射到目标中的整数时。 ModelMapper 失败。 来源 public class Request { private String classificati
我正在尝试使用 ModelMapper 将源映射到目标。 在我的具体情况下,在源类中有一个属性(评论列表),我必须在其中按评级求和并将该值设置为目标类。 所以我尝试使用转换器,但它不起作用。
我在映射稍微复杂一点的对象时遇到问题,实际上它只映射了对象的一半。 对象是: { "firstName": "John", "lastName": "John", "description": "It
我正在尝试使用 ModelMapper 映射以下 json,如此处所述 http://modelmapper.org/user-manual/gson-integration/但我收到 NullPoi
class A { class ADto { int id; -> int id; List b; List
我有以下实体类: class Provider{ private String providerId; private String identificationNumber;
我的结构类似于下面的: public class FirstObject { private List myListOne; ...only getter method...
我在使用 ModelMapper 框架时遇到了麻烦。请解释为什么我看到以下行为。 我在 build.gradle 中有以下依赖项 compile group: 'org.modelmapper', n
我有:返回 Date 对象的 Object1.getDataObject2.setData 获取一个字符串并填充他的字段。 我将以 yyyy-MM-dd 格式将数据对象从 src 映射到 String
我是一名优秀的程序员,十分优秀!