2011-05-25 103 views
3

我有一個像推土機映射

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; 
} 

一個ListWrapper和像

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(); 

但是 - 在目標列表中的豆類類型AccountBo的....

我能做些什麼來獲得AccountDto的名單?

+0

我想答案已經在這裏 [http://stackoverflow.com/questions/1358595/how-to-map-collections-在-推土機] [1] [1]:http://stackoverflow.com/questions/1358595/how-to-map-collections-in-dozer – jmpeace 2013-04-04 18:12:11

回答

2

我推薦使用ModelMapper而不是推土機這一點。

最簡單的解決方法是創建ListWrapper的子類,包括AccountDto:

public class DtoListWrapper extends ListWrapper<AccountDto> { 
} 

然後,當你去映射,ModelMapper就知道需要包含AccountBOs的ListWrapper轉換爲包含AccountDtos一個ListWrapper。

ModelMapper modelMapper = new ModelMapper(); 
ListWrapper<AccountDto> listWrapper = modelMapper.map(listWrapperBo, DtoListWrapper.class); 

就是這樣!更多的例子和文檔,檢查出ModelMapper網站:

http://modelmapper.org