gpt4 book ai didi

java - 如何使用hibernate在spring boot中实现分页

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:28 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com