我有一个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"),但是如您所见,我的变量名称相同,可以&# 39; t dozermapper自己做吗?因为here写的是它自动映射相同的命名变量。
答案 0 :(得分:1)
好的,首先要么将SourceClass变量更改为Strings,要么将src.a和src.b值更改为Integers。
其次,你需要在SourceClass和DestinationClass中都有getter和setter,因为无论变量是公共变量还是私有变量,dozer都会依赖它们。
以下解决方案有效:
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());
}
我希望这会有所帮助。