java - Dozer Mapper 不直接映射

标签 java reflection dozer

我有一个 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 不能自己完成它吗?因为here据记载,它会自动映射相同的命名变量。

最佳答案

好的,首先要么将 SourceClass 变量更改为字符串,要么将 src.a 和 src.b 值更改为整数。

其次,您需要在 SourceClass 和 DestinationClass 中都有 getter 和 setter,因为无论变量是公共(public)的还是私有(private)的,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());
    }

我希望这会有所帮助。

关于java - Dozer Mapper 不直接映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25037492/

相关文章:

具有多个客户端的 Java Socket 编程

javascript - 如何阅读代码中的函数描述?

c# - 如何通过服务引用发布 Reflection.MethodBase

java - JAXb 对象中的 Dozer 映射集合

java - 集合映射

Java/解析 : how to replace & symbol but not html codes

java - SMTP 主机配置

java - 在 Jbutton 启用之前要填充多个 Jtextfields

java - 用什么代替 Class.newInstance()?

java - BeanUtils.copyProperties() 与 DozerBeanMapper.map()