2016-09-26 114 views

回答

1

你不需要做任何事情;推土机应该处理这个箱子。

考虑以下两个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为空。