我正在尝试在Spring项目中使用DTO来解耦业务和表示,但是在从Spring Data存储库中检索数据时遇到了问题。这里有一个示例代码:
public Page<UserDto> findAll(int pageIndex) {
return userRepository.findAll(createPageable(pageIndex)); // Page<User>
}
正如您所看到的,我正在尝试返回UserDto页面,但我正在获取用户页面。
我该怎么做?
答案 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);
}
我刚刚开始编程。我意识到了。工作。 :)