我有 findPaginated
方法,每 20 条记录添加一次分页。新记录必须位于顶部,因此我将 findAllByOrderByIdDesc();
添加到我的存储库中,并且在没有分页的情况下一切正常,但我不知道如何将两者连接起来。
在我的InfoService
public Page<Info> findPaginated(int pageNo, int pageSize) {
Pageable pageable = PageRequest.of(pageNo -1, pageSize);
return this.infoRepo.findAll(pageable);
}
我不知道如何制作这样的东西:return this.infoRepo.findAllByOrderByIdDesc(pageable));
...
在我的InfoController
@GetMapping("/info/list")
public String showInfo (Model model) {
model.addAttribute("infos", infoRepo.findAllByOrderByIdDesc());
return findPaginated(1, model);
}
//...
@GetMapping("info/list/page/{pageNo}")
public String findPaginated(@PathVariable(value = "pageNo") int pageNo, Model model) {
int pageSize = 20;
Page<Info> page = infoService.findPaginated(pageNo, pageSize);
List<Info> infos = page.getContent();
model.addAttribute("currentPage", pageNo);
model.addAttribute("totalPages", page.getTotalPages());
model.addAttribute("totalElements", page.getTotalElements());
model.addAttribute("infos", infos);
return "info";
}
更改前的这部分工作正常
@GetMapping("/info/list")
public String showInfo (Model model) {
model.addAttribute("infos", infoRepo.findAllByOrderByIdDesc());
return "info";
}
所以我添加了 return findPaginated(1, model);
以每 20 条记录进行分页,但我卡住了,不知道如何正确连接以使其正常工作。
信息
Entity
public class Info {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String text;
答案 0 :(得分:1)
您可以按如下方式向 PageRequest
添加订单:
PageRequest.of(pageNo -1, pageSize, Sort.Direction.DESC, "id");
这样分页结果将按“id”字段和顺序方向 DESC 排序。
然后像往常一样使用您的 infoRepo#findAll
方法。
public Page<Info> findPaginated(int pageNo, int pageSize) {
Pageable pageable = PageRequest.of(pageNo -1, pageSize, Sort.Direction.DESC, "id");
return this.infoRepo.findAll(pageable);
}