我正在使用 spring boot 和 hibernate,我想在我的项目中使用分页。我在谷歌上搜索并看到了很多例子,但我无法在我的项目中实现它。
我想如果我在我的 url 中传递 1 那么应该有 10 个结果,如果我通过 2 那么接下来的 10 个结果应该来等等。
这是我的道
@Transactional
public interface PostDao extends CrudRepository<Post, Long>{
@Query(getAllPostsByRank)
List<Post> getAllPostsByRank();
final String getAllPostsByRank= "from Post order by value DESC";
}
这是我的 Controller
@RequestMapping("/top")
@ResponseBody
public List<Post> getAllPosts(HttpServletRequest req, HttpServletResponse res) throws ServletException {
List<Post> postobj = postDao.getAllPostsByRank();
return postobj;
}
这是我的url:
http://localhost:8888/v1.0/post/top/1
请提出建议。
最佳答案
我会考虑使用 org.springframework.data.domain.Pageable
直接进入你的 Controller 。然后可以将该对象传递到您的 JPA 层,它将在其中处理返回结果的数量和大小。
使用 Pageable
的好处是它返回 Page
可以在前端使用的对象,以形成上一页/下一页逻辑。
默认情况下,此类使用 url 参数“page”和“size”;因此 page=0&size=10 将返回前 10 个项目。
因此在您的情况下,代码可能类似于:
@ResponseBody
@RequestMapping("/top/pages/")
public List<Post> getAllPosts(@PageableDefault(value=10, page=0) Pageable pageable) throws ServletException {
Page page = postDao.findAll(pageable);
return page.getContent();
}
注意注释 @PageableDefault
只是设置默认值,这不是必需的。
在前端下一页调用可以是<a href="/top/pages?page=1">Next</a>
;这将返回从 11 到 20 的帖子列表。
关于java - 如何使用hibernate在spring boot中实现分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32434058/