4

私は次のような 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;
}

そして豆のような

public class AccountBo {
    private String accountName;

    public String getAccountName() {
        return accountName;
    }

    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }

}

そして別の豆のような

public 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 のリストを取得するにはどうすればよいですか?

4

1 に答える 1

2

これには Dozerの代わりにModelMapperを使用することをお勧めします。

最も簡単な解決策は、AccountDto を含む ListWrapper のサブクラスを作成することです。

public class DtoListWrapper extends ListWrapper<AccountDto> {
}

次に、マップに移動すると、ModelMapper は、AccountBO を含む ListWrapper を AccountDtos を含む ListWrapper に変換する必要があることを認識します。

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

それでおしまい!その他の例とドキュメントについては、ModelMapper サイトをご覧ください。

http://modelmapper.org

于 2011-06-28T05:59:22.497 に答える