通常对象映射器用于将较大的数据集映射到较小的数据集的场景(例如:Entity
对象有很多数据,但我们只想返回其中的几个)。
对象映射器通常创建一个小集合的目标对象的新实例,并从具有较大集合的源对象中设置所需字段,但我有相反的场景:我有一个已经包含一些数据的目标对象,现在我需要将具有较小数据集的新源对象映射到目标对象。
源类
public class SrcObj {
private String name;
private int i;
目的地类别
public class DestObj {
private String name;
private int i;
private float f;
private boolean b;
DesObj已经包含int i和float f的值,SrcObj有String name和int,我需要在不丢失现有数据的情况下将SrcObj数据保存到DestObj中。
模型映射器总是创建DestObj的新对象,该对象将SrcObj映射到其中,但其余字段为空。
public class ObjectMapper {
public static void main(String[] args) {
SrcObj src = new SrcObj("src name", 1);
DestObj dest = new DestObj(null, 0, 1, true);
ModelMapper modelMapper = ObjectMapper.modelMapper();
dest = modelMapper.map(src, DestObj.class);
System.out.println(dest);
}
private static ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
PropertyMap<SrcObj, DestObj> orderMap = new PropertyMap<SrcObj, DestObj>() {
protected void configure() {
// map().setI(destination.getI());
map().setI(source.getI());
System.out.println("model mapper");
map().setName(source.getName());
}
};
modelMapper.addMappings(orderMap);
return modelMapper;
}
}
模型映射器中有一个使用目标的选项,上面评论过,但它不起作用。
我怎么能让deObj包含所有值deObj[name="src name", i=1, f=1.1, b=true]
@谢谢你的回复,它奏效了,只是为了解决问题。
SrcObj src = new SrcObj("src name", 1);
DestObj dest = new DestObj(null, 0, 1, true);
ModelMapper modelMapper = ObjectMapper.modelMapper();
modelMapper.map(src, dest);
System.out.println(dest);
首先,如果您不想在类中使用getter/setter,您可以只启用字段匹配功能。
modelMapper.getConfiguration()
.setFieldMatchingEnabled(true)
.setFieldAccessLevel(AccessLevel.PRIVATE);
您可以简单地ModelMapper.map(src, est)
,它将从源代码更新est的属性。
我有一个多模块分级项目。一个单元(A)包含与数据库有关的类;另一个(B)包含Spark应用程序并依赖于A。 在B的上,A的任何可传递依赖项都不可用。 我的目标是在模块A中只对番石榴进行遮蔽和重新定位,以最小化罐子大小和构建时间。然后,我需要带阴影的JAR以及B的上可用的A的可传递依赖项。
首先,我不是Docker新手(或专家),只是不确定如何在不炸毁我当前容器的情况下完成此操作。 我在玩Postgres,并使用这个命令构建了一个容器,但没有意识到它不会将Postgres暴露在Docker之外 我希望其他系统能够访问这些数据。我不想删除容器,因为我已经做了相当多的配置。 在停止实例后,我尝试过在 中编辑容器 文件,但是在启动容器备份后,该文件被覆盖。 将端口暴露在容器之外的最佳实践是
我使用下面的代码(来自这个答案)来配置要记录在WebClient请求上的头: 这很管用,但感觉有点奇怪。问题是:我是否需要像这样包含Jackson/objectMapper配置,或者是否有更简单的方法来避免Spring objectMapper配置被覆盖?
问题内容: 我想更改数据库表的列位置而不丢失数据。 例如: 当前表: 到 问题答案: 试试这个:
我想在不丢失数据的情况下更改数据库表的列位置。 例如: 当前表格: 到
我安装了一个HBase,其中有一组现有表,其中有一组数据(我不想删除)。最近,我偶然发现使用Apache Phoenix可以使用类似SQL的语法查询HBase数据,到目前为止,这非常棒。然而,由于我仍然不完全熟悉各种数据类型以及它们如何映射到我存储在HBase中的Java类型,有时我会弄错。如果我有一个存储为的HBase列 我不小心将我的Phoenix列创建为varchar,我现在如何在不丢失所有