我是推土机映射的新手
我们可以将多个源类的属性映射到目标吗?
例如
class A {
int a;
int b;
}
class B {
String c;
}
class Destination {
int a;
int b;
String c;
}
可以用一个映射配置文件来做到这一点吗?
你可以映射两次。首先,使用 Destination.class 作为目标,然后使用从第一个映射产生的 Object 作为目标:
One one = new One();
one.setA(1);
one.setB(2);
Two two = new Two();
two.setC("3");
Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
Destination destination = mapper.map(one, Destination.class);
mapper.map(two, destination);
System.out.println(destination);
// Destination [a=1, b=2, c=3]
这甚至适用于空映射配置文件。
不是直接没有。您需要创建一个新类来包装您的两个源类并从中复制:
class D {
private A a;
private B b;
}
<mapping>
<class-a>D</class-a>
<class-b>C</class-b>
<field>
<a>a.a</a>
<b>a</b>
</field>
<field>
<a>a.b</a>
<b>b</b>
</field>
<field>
<a>b.c</a>
<b>c</b>
</field>
</mapping>
或者,您需要复制两次,一次从每个源类复制到目标对象,确保不要空白现有字段。
<mapping wildcard="false">
<class-a>A</class-a>
<class-b>C/class-b>
<field>
<a>a</a>
<b>a</b>
</field>
<field>
<a>b</a>
<b>b</b>
</field>
</mapping>
<mapping wildcard="false">
<class-a>B</class-a>
<class-b>C/class-b>
<field>
<a>c</a>
<b>c</b>
</field>
</mapping>