如何正确设置推土机6.4.1或ModelMapper 2.2.0的映射,以成功映射java。时间LocalDate字段到java。util。日期字段,反之亦然?
考虑以下类别:
public class Foo {
private LocalDate signatureDate;
// getters and setters
}
public class Bar {
private Date signatureDate;
// getters and setters
}
然后调用映射器。map(fooInstance,Bar.class) 无效。
我尝试过创建和注册自定义转换器。使用Dozer,我创建了扩展DozerConverter的类
LocalDateToDateConverter
mapper = DozerBeanMapperBuilder
.create()
.withCustomConverter(new LocalDateToDateConverter())
.build();
但是com.github.推土机绘图机。果心转换器。在转换类时,使用DateConverter。
另外值得注意的是,我希望为所有可能需要这种类型转换的类提供一个通用解决方案,这样我就不必为每个类制作转换器。
使用模型映射器,您可以为条形图和Foo类配置日期和本地日期之间的转换器。
转换器:
private static final Converter<Date, LocalDate> DATE_TO_LOCAL_DATE_CONVERTER = mappingContext -> {
Date source = mappingContext.getSource();
return source.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
};
private static final Converter<LocalDate, Date> LOCAL_DATE_TO_DATE_CONVERTER = mappingContext -> {
LocalDate source = mappingContext.getSource();
return Date.from(source.atStartOfDay(ZoneId.systemDefault()).toInstant());
};
映射器配置:
ModelMapper mapper = new ModelMapper();
TypeMap<Bar, Foo> barToFooMapping = mapper.createTypeMap(Bar.class, Foo.class);
barToFooMapping.addMappings(mapping -> mapping.using(DATE_TO_LOCAL_DATE_CONVERTER).map(Bar::getSignatureDate, Foo::setSignatureDate));
TypeMap<Foo, Bar> fooToBarMapping = mapper.createTypeMap(Foo.class, Bar.class);
fooToBarMapping.addMappings(mapping -> mapping.using(LOCAL_DATE_TO_DATE_CONVERTER).map(Foo::getSignatureDate, Bar::setSignatureDate));
在将日期转换为本地日期和将本地日期转换为日期时,请注意时区。
我试图使用Dozer映射UUID字段,遇到了Dozer github上提到的一个问题: https://github.com/DozerMapper/dozer/issues/83 问题是-显然,Dozer依赖于UUID中不存在的默认无参数构造函数。因此,该链接显示了如何告知推土机执行参考复制。然而,使用该提示并没有帮助,我仍然会遇到以下异常: org.dozer.java.lang.java.u
在Dozer的帮助下,我想将映射到DTO类 但是这两种设置
我在Spring启动时使用推土机映射器。如果我将数据从实体映射到EntityDTO,那么dozer maper的工作就是将数据从实体类复制到EntityDTO,对于原语也是如此。但是假设我有这样一门课 和名称为EntityDTO的DTO 那么它不会将数据从entityChild映射到EntityChildTos,有人能帮我解决这个问题吗?
我是使用dozer的新手。我需要将集合映射到一个类,该类是集合中源类的属性。我有如下类技术 我想映射到 哪里 我的推土机绘图将是什么样子?
我想让推土机地图成为我的职业: 到生成的,如下所示: . 也就是说,我正在尝试将嵌套类的字段映射到平面键目标。我使用的是JavaAPI的Dozer,而不是xml。我无法找到适当的构建器配置来管理它。基本代码类似于:
问题内容: 我想将a存储在列中并保持不变。这两个和是“本地”类型的定义。因此, 时区 的概念不应以任何方式干涉。 下面的代码是一个最小示例,该示例在内存数据库中创建带有列的表。Maven工件必须在类路径中。 首先,定义方法和: 请注意,该方法使用单引号引起来的值,因此Java™没有机会创建时区歧义。现在,一次调用几次,每次使用不同的时区设置: 然后打印以下内容: 假设数据库表未更改,如何编写该方法