Dozer映射两个不匹配的参数计数类
答
你不需要做任何事情;推土机应该处理这个箱子。
考虑以下两个bean:
Source.java
public class Source {
private String field1;
private String field2;
private String field3;
// Getters and setters omitted
}
Destination.java
public class Destination {
private String field1;
private String field2;
// Getters and setters omitted
}
您可以使用下面的映射在dozer.xml文件(这将映射两个bean中名称匹配的所有属性):
<mapping>
<class-a>com.example.Source</class-a>
<class-b>com.example.Destination</class-b>
</mapping>
下面的单元测试表明,映射是双向的:
@Test
public void sourceToDestination() {
List<String> mappingFiles = new ArrayList<String>();
mappingFiles.add("dozer.xml");
this.beanMapper = new DozerBeanMapper(mappingFiles);
Source source = new Source();
source.setField1("A");
source.setField2("B");
source.setField3("C");
Destination dest = beanMapper.map(source, Destination.class);
assertEquals("A", dest.getField1());
assertEquals("B", dest.getField2());
}
@Test
public void destinationToSource() {
List<String> mappingFiles = new ArrayList<String>();
mappingFiles.add("dozer.xml");
this.beanMapper = new DozerBeanMapper(mappingFiles);
Destination dest = new Destination();
dest.setField1("A");
dest.setField2("B");
Source source = beanMapper.map(dest, Source.class);
assertEquals("A", source.getField1());
assertEquals("B", source.getField2());
assertNull(source.getField3());
}
当我们映射源到目的地,因为目标没有一个名为field3
则忽略属性。当我们以另一种方式映射(Destination to Source)时,Source中的field3
为空。