从Spring Data存储库获取DTO对象的页面

时间:2014-12-18 23:04:39

标签: spring spring-data dto

我正在尝试在Spring项目中使用DTO来解耦业务和表示,但是在从Spring Data存储库中检索数据时遇到了问题。这里有一个示例代码:

public Page<UserDto> findAll(int pageIndex) {
    return userRepository.findAll(createPageable(pageIndex)); // Page<User>
}

正如您所看到的,我正在尝试返回UserDto页面,但我正在获取用户页面。

我该怎么做?

2 个答案:

答案 0 :(得分:14)

你可以这样做:

public Page<UserDto> findAll(Pageable p) {
    Page<User> page = userRepository.findAll(p); // Page<User>
    return new PageImpl<UserDto>(UserConverter.convert(page.getContent()), p, page.getTotalElements());
}

答案 1 :(得分:2)

public Page<PersonDto> findAllPageableOrderBylastName(Pageable pageable) {
        Page<Person> personPage = personRepository.findAllByLastNameIsNotNullOrderByLastName(pageable);
        int totalElements = (int) personPage.getTotalElements();
        return new PageImpl<PersonDto>(personPage
                .stream()
                .map(person -> new PersonDto(
                        person.getId(),
                        person.getFirstName(),
                        person.getLastName(),
                        person.getNumberMobil(),
                        person.getPresentPosition()))
                .collect(Collectors.toList()), pageable, totalElements);
        }

我刚刚开始编程。我意识到了。工作。 :)