我使用ModelMapper将一些对象转换为复杂的DTO,反之亦然。
尽管我试图理解留档,但我发现很难理解何时使用转换器、提供程序或抽象转换器。
现在,例如,如果我想将字符串属性转换为目标DTO中的小DTO,我将在抽象转换器中手动执行。
例如:
dest.setAddressDTO(new AddressDTO(source.getStreet(), source.getNumber()));
虽然这是正确的方法吗?我应该何时使用提供商?
如果我想用条件设置属性,我可以在转换器中使用条件吗?或者只有在使用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);
}
我在Enver和MySql 5.6中使用HiberNate 4.3.4。 如果没有 JPA 2.1 转换器,下面的 实体在 上会失败,因为 Hibernate 不知道如何处理 Name 类: 例外情况是: 为了解决这个问题,我然后添加这个转换器: 现在,异常变为: 这现在在实体的Envers审计表中失败。请注意,是审核表的名称,由选择。 完整的堆栈跟踪是: 我如何解决这个问题?Envers甚至与A
如果您需要在Aurelia应用程序中转换某些值,则可以使用converters而不是手动将值转换为所需的格式。 转换日期 当我们想要将默认日期值转换为某种特定格式时,我们可以使用momentJS库。 这是一个用于操作日期的小型库。 C:\Users\username\Desktop\aureliaApp>jspm install moment 让我们创建一个新文件converters.js 。
XStream转换器是XStream库的关键组件,它负责将对象转换为XML,反之亦然。 XStream为常见类型提供了大量转换器,例如基元,字符串,文件,集合,数组和日期。 使用转换器 让我们使用SingleValueConvertor,其目的是将对象转换为单个字符串。 我们将使用SingleValueConvertor将对象写为属性字符串。 创建转换器 class NameConverter i
程序说明: 1. 依赖:Windows操作系统,.Net FrameWork 3.5, Office Word 2. Word另存为HTML有几种格式可以选:单个网页mht,网页htm以及筛选过的网页htm。我选择的是筛选过的html,所有公式全部转成gif或者jpg图片,稍微规范一点的htm不会含有微软中的一些恶心的格式信息。 运行界面如下: 1. 程序初始界面: 2. “Open”选择一个
我在android studio中建立了一个转换器,当我每次按转换按钮时,距离部分(activity)就会崩溃。该应用程序说,特定的activity已经停止工作,该应用程序回到主要的activity。在android studio中没有显示任何错误,我想我的问题可能是在使用旋转器中的int pos,但我不确定。这是我最后要完成的元素。请帮帮忙。下面是Java,后面是XML。 和xml null
我为jsf创建了一个自定义转换器。getAsObject()工作正常,但getAsString()返回异常。我不确定问题出在哪里,我尝试过用不同的方式将对象转换为字符串,但它不断返回异常。 这是我的代码: 这是Product类(为简单起见排除了getter/Setters/equals()/hash()): 这是stack我得到的: 这是我使用转换器的jsf: