簡體   English   中英

推土機映射器未直接映射

[英]Dozer Mapper is not mapping directly

我有一個帶有以下參數的SourceClass:

class SourceClass{
   public Integer a;
   public Integer b;
}

而DestinationClass為:

class DestinationClass {
   public Integer a;
   public Integer b;
}

這是我的測試代碼:

public static void main(String[] args) {
    Mapper mapper = new DozerBeanMapper();

    SourceClass src= new SourceClass();
    src.a= 1;
    src.b= 2;

    DestinationClass dest = mapper.map(src, DestinationClass.class);

    System.out.println(dest.a  + "  " + dest.b);
}

代碼的最后一行顯示為null null ,現在我也嘗試通過給定getter / setter方法 ,但沒有成功,我最終通過指定@Mapping注釋獲得了輸出,該變量給出了要映射的變量名稱,例如@ Mappinf(“ a”),但是您看到的變量名相同,所以dozermapper不能單獨執行它嗎?因為在這里寫成它會自動映射相同的命名變量。

好的,首先將SourceClass變量更改為String或將src.a和src.b值更改為Integers。

其次,您需要在SourceClass和DestinationClass中都具有getter和setter,因為無論變量是公共變量還是私有變量,推土機都依賴它們。

以下解決方案有效:

public class SourceClass{
private Integer a;
private Integer b;

public Integer getA(){
    return a;
}

public void setA(Integer a){
    this.a = a;
}

public Integer getB()
{
    return b;
}

public void setB(Integer b){
    this.b = b;
}
}

public class DestClass{
    private Integer a;
    private Integer b;

    public Integer getA(){
        return a;
    }

    public void setA(Integer a){
        this.a = a;
    }

    public Integer getB(){
        return b;
    }

    public void setB(Integer b){
        this.b = b;
    }
}

public static void main(String[] args)
    {
        Mapper mapper = new DozerBeanMapper();

        SourceClass src = new SourceClass();
        src.setA(1);
        src.setB(2);

        DestClass dest = mapper.map(src, DestClass.class);

        System.out.println(dest.getA() + "  " + dest.getB());
    }

我希望這有幫助。

暫無
暫無

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

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