Java Dozer映射两个参数计数不匹配的类
我有两个bean,一个有五个属性,另一个有四个属性。如果我只是想忽略额外的属性,如何配置映射Java Dozer映射两个参数计数不匹配的类,java,dozer,object-object-mapping,Java,Dozer,Object Object Mapping,我有两个bean,一个有五个属性,另一个有四个属性。如果我只是想忽略额外的属性,如何配置映射 我看到的所有排除示例都为第一类和第二类提供了一个参数。你不需要做任何事情;推土机应在开箱即用 考虑以下两个bean: Source.java public class Source { private String field1; private String field2; private String field3; // Getters and setters o
我看到的所有排除示例都为第一类和第二类提供了一个参数。你不需要做任何事情;推土机应在开箱即用 考虑以下两个bean: Source.java
public class Source {
private String field1;
private String field2;
private String field3;
// Getters and setters omitted
}
public class Destination {
private String field1;
private String field2;
// Getters and setters omitted
}
Destination.java
public class Source {
private String field1;
private String field2;
private String field3;
// Getters and setters omitted
}
public class Destination {
private String field1;
private String field2;
// Getters and setters omitted
}
可以在dozer.xml文件中使用以下映射(这将映射两个bean中名称匹配的所有属性):
com.example.Source
com.example.Destination
以下单元测试表明,映射是双向的:
@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());
}
@测试
public void sourceToDestination(){
List mappingFiles=new ArrayList();
mappingFiles.add(“dozer.xml”);
this.beanMapper=新的DozerBeanMapper(映射文件);
Source Source=新源();
来源:setField1(“A”);
资料来源:setField2(“B”);
资料来源:setField3(“C”);
Destination dest=beanMapper.map(源,Destination.class);
assertEquals(“A”,dest.getField1());
assertEquals(“B”,dest.getField2());
}
@试验
public void destinationsource(){
List mappingFiles=new ArrayList();
mappingFiles.add(“dozer.xml”);
this.beanMapper=新的DozerBeanMapper(映射文件);
Destination dest=新目的地();
目的地设置字段1(“A”);
目的地设置域2(“B”);
Source-Source=beanMapper.map(dest,Source.class);
assertEquals(“A”,source.getField1());
assertEquals(“B”,source.getField2());
assertNull(source.getField3());
}
当我们将源映射到目标时,由于目标没有名为
field3
的属性,因此将忽略它。当我们以另一种方式映射(目标到源)时,源中的字段3
为空。您不需要做任何事情;推土机应在开箱即用
考虑以下两个bean:
Source.java
public class Source {
private String field1;
private String field2;
private String field3;
// Getters and setters omitted
}
public class Destination {
private String field1;
private String field2;
// Getters and setters omitted
}
Destination.java
public class Source {
private String field1;
private String field2;
private String field3;
// Getters and setters omitted
}
public class Destination {
private String field1;
private String field2;
// Getters and setters omitted
}
可以在dozer.xml文件中使用以下映射(这将映射两个bean中名称匹配的所有属性):
com.example.Source
com.example.Destination
以下单元测试表明,映射是双向的:
@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());
}
@测试
public void sourceToDestination(){
List mappingFiles=new ArrayList();
mappingFiles.add(“dozer.xml”);
this.beanMapper=新的DozerBeanMapper(映射文件);
Source Source=新源();
来源:setField1(“A”);
资料来源:setField2(“B”);
资料来源:setField3(“C”);
Destination dest=beanMapper.map(源,Destination.class);
assertEquals(“A”,dest.getField1());
assertEquals(“B”,dest.getField2());
}
@试验
public void destinationsource(){
List mappingFiles=new ArrayList();
mappingFiles.add(“dozer.xml”);
this.beanMapper=新的DozerBeanMapper(映射文件);
Destination dest=新目的地();
目的地设置字段1(“A”);
目的地设置域2(“B”);
Source-Source=beanMapper.map(dest,Source.class);
assertEquals(“A”,source.getField1());
assertEquals(“B”,source.getField2());
assertNull(source.getField3());
}
当我们将源映射到目标时,由于目标没有名为field3
的属性,因此将忽略它。当我们以另一种方式映射(目标到源)时,源中的field3
为空