我有一个类似
的ListWrapperpublic 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;
}
和像
这样的beanpublic class AccountBo {
private String accountName;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
}
和另一个像
的beanpublic class AccountDto {
private String accountName;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
}
现在的想法是用AccountBo类型的bean填充列表,并使用Dozer映射列表,然后用AccountDto Bean填充。
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列表?
答案 0 :(得分:2)
我建议使用ModelMapper代替Dozer。
最简单的解决方案是创建一个ListWrapper的子类,其中包含AccountDto:
public class DtoListWrapper extends ListWrapper<AccountDto> {
}
然后当你去map时,ModelMapper会知道包含AccountBOs的ListWrap需要转换为包含AccountDtos的ListWrapper。
ModelMapper modelMapper = new ModelMapper();
ListWrapper<AccountDto> listWrapper = modelMapper.map(listWrapperBo, DtoListWrapper.class);
就是这样!有关更多示例和文档,请查看ModelMapper站点: