Sorting 集合上的分页和排序
我想对照片的ArrayList应用分页和排序。rest客户端将检索该列表。这里是我尝试分页,但返回所有5k元素。我试着在JpaRepository中实现类似的分页。排序是通过compareTo方法完成的,似乎也不能正常工作 PhotoServiceImpl.javaSorting 集合上的分页和排序,sorting,spring-data,paging,vaadin8,Sorting,Spring Data,Paging,Vaadin8,我想对照片的ArrayList应用分页和排序。rest客户端将检索该列表。这里是我尝试分页,但返回所有5k元素。我试着在JpaRepository中实现类似的分页。排序是通过compareTo方法完成的,似乎也不能正常工作 PhotoServiceImpl.java private List<Photo> repository; public PhotoServiceImpl() { RestTemplate restTemplate = new Re
private List<Photo> repository;
public PhotoServiceImpl() {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<List<Photo>> photoResponse = restTemplate.exchange("https://jsonplaceholder.typicode.com/photos", HttpMethod.GET, null, new ParameterizedTypeReference<List<Photo>>() {
});
this.repository = photoResponse.getBody();
}
@Override
public List<Photo> findAll() {
return repository;
}
@Override
public Page<Photo> findAll(Pageable pageable) {
List<Photo> photos = findAll();
return new PageImpl<Photo>(photos, new PageRequest(pageable.getPageNumber(), pageable.getPageSize()), photos.size());
}
@Override
public Page<Photo> findAll(Pageable pageable, Sort.Direction sortOrder) {
List<Photo> photos = findAll();
return new PageImpl<Photo>(photos, new
PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sortOrder), photos.size());
}
@Override
public List<Photo> findAll(Sort.Direction sortOrder) {
List<Photo> photos = repository
.stream()
.sorted()
.collect(Collectors.toList());
if (sortOrder.isDescending())
Collections.reverse(photos);
return photos;
}
在PageRequest实例中获取具有页面大小和排序集的所有照片和包装并不能满足您的需要。PageRequest类或PageImpl类不执行将数据列表切片到页面或执行排序。你必须自己做
List<Photo> photos = findAll();
//
// << Add your page extraction and sorting code here >>
//
return new PageImpl<Photo>(photos,
new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sortOrder), photos.size());
List<Photo> photos = findAll();
//
// << Add your page extraction and sorting code here >>
//
return new PageImpl<Photo>(photos,
new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sortOrder), photos.size());