gpt4 book ai didi

java - Selma 将 List 映射到 T

转载 作者:行者123 更新时间:2023-12-01 10:24:21 26 4
gpt4 key购买 nike

我正在使用 Selma,并且我有以下类(class):

public class Customer
{
private int id;
private String email;
private String firstName;
private String lastName;
private Date registeredDate;
private List<Address> addresses;

}

我想将其映射到:

public class Customer
{
private String id;
private String email;
private String firstName;
private String lastName;
private Date registeredDate;
private String company;
private Address address1;
private Address address2;
}

有没有办法将 (int) id 转换为 (String) id 并将 List 中的第一个地址设置为address1address2 的第二个地址?

我正在考虑使用拦截器,但这样我就必须手动映射 Address 类。有没有办法使用Selma自动映射拦截器中的地址类?例如:

 public class CustomerCustomMapper
{
public void interceptMyCustomerToCustomer(com.mycode.domain.Customer source, Customer destination) {

if(source.getAddresses() != null && source.getAddresses().size() > 0)
{
com.mycode.domain.Address myAddress1 = source.getAddresses().get(0);

AddressMapper addressMapper = Selma.builder(AddressMapper.class).build();

Address address1 = addressMapper.mapAddress(myAddress1);
destination.setAddress1(address1);

// do the same for address2
}
}
<小时/>

编辑

关于映射 Address 类,我按照上面所示的方式进行了操作。我创建了一个 AddressMapper ,其中包含以下代码:Address toAddress(com.mycode.domain.Address address);

然后我创建了一个addressMapper并用它来自动映射地址:

AddressMapper addressMapper = Selma.builder(AddressMapper.class).build();

至于id,目前我必须为我映射的每个类创建一个拦截器(几乎每个类都有一个Id(SQL)),并手动设置id,如下所示:destination.setId( Integer.toString(source.getId()));

实际上这很令人沮丧,但遗憾的是我找不到更好的选择。

最佳答案

对于地址拦截器的列表是很好的答案。

对于 int 到 String,您可以指定从 int 到 String 的自定义映射器映射(请参阅 http://www.selma-java.org/#custom-mapper )。

但我建议使用抽象映射器而不是构建新的映射器来映射地址。这样您就可以将特定代码集成到映射器中并直接调用地址映射器方法(请参阅 http://www.selma-java.org/#abstract-mapper )。

对于 toString 事物,您还可以向 Github 添加功能请求。我很高兴添加此功能。

关于java - Selma 将 List<T> 映射到 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35412941/

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