在 Spring Data JPA 中创建分页

新手上路,请多包涵

我正在尝试在 Spring Data JPA 中实现分页功能。我 指的是这个 博客我的控制器包含以下代码:

  @RequestMapping(value="/organizationData", method = RequestMethod.GET)
  public String list(Pageable pageable, Model model){
    Page<Organization> members = this.OrganizationRepository.findAll(pageable);
    model.addAttribute("members", members.getContent());
    float nrOfPages = members.getTotalPages();
    model.addAttribute("maxPages", nrOfPages);
    return "members/list";
  }

我的 DAO 如下:

 @Query(value="select m from Member m", countQuery="select count(m) from Member m")
  Page<Organization> findMembers(Pageable pageable);

我可以显示前 20 条记录,如何显示接下来的 20 条记录??? 我可以参考其他任何分页示例吗?

原文由 Tejas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 963
2 个回答

上周看到过类似的问题,但是找不到所以直接回答。

您的问题是您指定参数的时间太晚了。 Pageable 工作方式如下:您创建 Pageable 具有某些属性的对象。您至少可以指定:

  1. 页面大小,
  2. 页码,
  3. 排序。

所以让我们假设我们有:

 PageRequest p = new PageRequest(2, 20);

上面传递给查询的将过滤结果,因此只返回第 21 到 40 的结果。

您不对结果应用 Pageable 。您将其与查询一起传递。

编辑:

PageRequest 的构造函数已弃用。使用 Pageable pageable = PageRequest.of(2, 20);

原文由 xenteros 发布,翻译遵循 CC BY-SA 4.0 许可协议

Pageable 的构造函数已弃用,请使用 of() 代替:

 Pageable pageable = PageRequest.of(0, 20);

原文由 snowfox 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题