[英]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.