【问题标题】:Howto set limit result per page in jpa and PagingAndSortingRepository?如何在 jpa 和 PagingAndSortingRepository 中设置每页的限制结果?
【发布时间】:2017-09-22 17:45:05
【问题描述】:

有一个 Spring Boot 博客项目,需要在主页显示最新的收藏帖子,在数据库中有一个包含帖子的表和一个带有布尔值 (tinyint) 的列 show_in_main_page,它定义帖子是否显示在主页面页面与否。

在 java 控制器中获取动态小部件并获取每个小部件的最新收藏夹,每个小部件都有一个 foreach 但需要每个小部件获得 1 个或多个帖子,我同时使用 PagingAndSortingRepository 和 Page 结果控制器调用 nextPageable() 和下一个最后最喜欢的帖子。

如何为存储库中的每个页面设置 1 个结果?如何使用每页的结果数创建一个动态函数?例如:当 3 是动态值时,调用存储库以按从控制器调用的页面获取 3 个结果。

我的界面是:

public interface PostRepository extends PagingAndSortingRepository<PostEntity, Long>{
    Page<PostEntity> findAll(Pageable pageable);
    Page<PostEntity> findByShowInMainPage(Boolean showInMainPage); // <--
}

【问题讨论】:

  • 当您说您尝试从控制器执行此操作时,您是否使用内置的 spring 功能来传递查询参数? /mypage?page=1&size=3
  • 需要内部使用,不可操作使用。

标签: mysql spring hibernate spring-boot spring-data-jpa


【解决方案1】:

如果我理解正确你需要PageRequest:

Page<PostEntity> postEntityPage = findAll(new PageRequest(0, 3));

它获取第一个 (0) 页面,页面中有三个 PostEntity

【讨论】:

  • 模拟LIMIT 0, 3 但如果调用下一页返回接下来的3个结果?需要无限的结果,但每个分页只需要 x 个结果,例如结果中每页 3 个。
  • @e-info128PageRequest的第一个参数是页码-0,1,2...
  • 感谢为我工作,当 items_per_page 为 1 并且每个帖子小部件调用 postEntity = posts.getContent().get(item_id); posts.nextPageable(); item_id++; 时,我使用 new PageRequest(0, items_per_page, Sort.Direction.DESC, "created_at")。现在每个小部件都有一个最后最喜欢的帖子,而无需获取所有帖子。谢谢。
【解决方案2】:

如果您尝试从控制器获取分页,只需在控件上为 Pageable 添加一个参数。例如

@RequestMapping(value = "{username}", method = RequestMethod.GET, produces = MediaType.TEXT_HTML_VALUE)
    public String entries(@PathVariable(PATH_USERNAME) final String username,
                          final Pageable pageable,
                          final Model model) {
...

这将在您的控制器上自动为您提供页面和大小的参数。所以 URL 看起来像 /users/myusername?page=1&size=3 并且会返回前 3 个结果。设置 page = 2 将为您提供接下来的 3 个结果,依此类推。

然后您可以将可分页变量传递给存储库的 findAll 方法以获取数据。

【讨论】:

  • 谢谢,但不需要通过请求参数传递值的控制,需要动态显示管理员确定的特定数量的值或仅开发。
猜你喜欢
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
  • 2017-09-13
相关资源
最近更新 更多