簡體   English   中英

推土機映射參數計數不匹配的兩個類

[英]Dozer mapping two classes with mismatched argument counts

我有兩個bean,一個具有五個屬性,另一個具有四個屬性。 如果我只是想忽略多余的屬性,如何配置映射?

我看到的所有排除示例均針對第一個類和第二個類使用一個參數。

您無需執行任何操作; 推土機應開箱即用。

考慮以下兩個bean:

源代碼

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());
    }

當我們將Source映射到Destination時,由於Destination沒有名為field3的屬性,因此將其忽略。 當我們以另一種方式映射(目標到源)時,源中的field3為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM