gpt4 book ai didi

java - 将一个 bean 中的 firstName、lastName 映射到另一个 bean 中的名称

转载 作者:行者123 更新时间:2023-11-30 07:33:39 25 4
gpt4 key购买 nike

我正在尝试使用 Dozer 在 Java 中映射两个 bean,并有以下场景:

CustomerA 有名字和姓氏

public Class CustomerA {
public String firstName;
public String lastName;
...
// Getters and Setters
}

CustomerB 有姓名,需要映射到 firstName+""+lastName

public Class CustomerB {
public String name;
...
// Getters and Setters
}

是否可以使用 Dozer 来实现此目的?映射文件会是什么样子?我有一个自定义转换器,如下所示:

public class NameConvertor {
public Object convert(Object destination, Object source, Class destClass, Class sourceClass) {
Object retValue = null;
if (source == null) {
return null;
}
if (source instanceof CustomerA) {
CustomerA src = (CustomerA) source;
CustomerB dest = (CustomerB) destination;
if (destination == null) {
dest = new CustomerB();
}
dest.setName(src.getFirstName()+" "+src.getLastName());
retValue = dest;
} else if (source instanceof CustomerB) {
CustomerB src = (CustomerB) source;
CustomerA dest = (CustomerA) destination;
if (destination == null) {
dest = new CustomerA();
}
dest.setFirstName(src.getName().split(" ")[0]);
dest.setLastName(src.getName().split(" ")[1]);
retValue = dest;
}
return retValue;
}
}

最佳答案

您可以将“this”(A 的实例)传递到自定义转换器中,将两个字段连接在一起并将它们返回以映射到目标。

因此,在您的映射中您将得到如下内容:

<mapping>
<class-a>path.to.CustomerA</class-a>
<class-b>path.to.CustomerB</class-b>
<field custom-converter="NameConverter" type="one-way">
<a>this</a>
<b>name</b>
</field>
</mapping>

然后在你的转换器中你会看到这样的东西:

CustomerA customerA = (CustomerA) source;
StringBuilder builder = new StringBuilder();
builder.append(customerA.getFirstName());
builder.append(customerA.getLastName());
return builder.toString();

我使用一些示例代码进行了测试,它按预期映射。让我知道它是否适合您!

关于java - 将一个 bean 中的 firstName、lastName 映射到另一个 bean 中的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35712829/

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