gpt4 book ai didi

java - Dozer Mapper 不直接映射

转载 作者:行者123 更新时间:2023-12-01 12:41:46 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com