我有一个 ListWrapper 像
public class ListWrapper<T> {
private List<T> entries = new ArrayList<T>();
public List<T> getEntries() {
return entries;
}
public void setEntries(List<T> entries) {
this.entries = entries;
}
和一颗 bean
public class AccountBo {
private String accountName;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
}
和另一个 bean 一样
public class AccountDto {
private String accountName;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
}
现在的想法是用 AccountBo 类型的 bean 填充列表并使用 Dozer 映射列表,然后用 AccountDto Beans 填充。
AccountBo accountA = new AccountBo();
accountA.setAccountName("Person A");
AccountBo accountB = new AccountBo();
accountB.setAccountName("Person B");
ListWrapper<AccountBo> listWrapperBo = new ListWrapper();
listWrapperBo.getEntries().add(accountA);
listWrapperBo.getEntries().add(accountB);
ListWrapper<AccountDto> dtoList = EntityMapper.getInstance().map(listWrapperBo, ListWrapper.class);
List<AccountDto> listDto = dtoList.getEntries();
但是 - 目标列表中的 Bean 属于 AccountBo ....
我该怎么做才能获得 AccountDto 的列表?
最佳答案
我建议使用 ModelMapper而不是为此而使用推土机。
最简单的解决方案是创建一个包含 AccountDto 的 ListWrapper 子类:
public class DtoListWrapper extends ListWrapper<AccountDto> {
}
那么当你去map的时候,ModelMapper就会知道包含AccountBOs的ListWrapper需要转换成包含AccountDtos的ListWrapper。
ModelMapper modelMapper = new ModelMapper();
ListWrapper<AccountDto> listWrapper = modelMapper.map(listWrapperBo, DtoListWrapper.class);
就是这样!有关更多示例和文档,请查看 ModelMapper 站点:
http://modelmapper.org
关于list - 通用列表的推土机映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6123759/