当前位置: 首页 > 知识库问答 >
问题:

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

伯俊弼
2023-03-14

我正在使用spring boot和hibernate,我想在我的项目中使用分页。我在谷歌上搜索过,看到了很多例子,但我无法在我的项目中实现它。

我想像,如果我在我的url通过1,然后10个结果应该来,如果我通过2,然后下10个结果应该来,等等。

null

@Transactional
public interface PostDao extends CrudRepository<Post, Long>{

@Query(getAllPostsByRank)
List<Post> getAllPostsByRank();

final String getAllPostsByRank= "from Post order by value DESC";
}

null

@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

请建议。

共有3个答案

黄弘新
2023-03-14

在spring boot实现分页非常容易,只需遵循基本步骤-

1-在repository接口中扩展PagingAndSortingRepository

public interface UserRepository extends PagingAndSortingRepository <User, Long> 

2-方法声明应该如下例所示

Page<User> userList(Pageable pageable);

服务类中的3-方法实现应该如下例所示

@Override
public Page<User> userList(Pageable pageable) {
        return userRepository.findAll(pageable);
}

4-控制器类代码应如下所示

@GetMapping("/list")
public String userList(Model model, Pageable pageable) {
        Page<User> pages = userService.userList(pageable);
        model.addAttribute("number", pages.getNumber());
        model.addAttribute("totalPages", pages.getTotalPages());
        model.addAttribute("totalElements",       
                                      pages.getTotalElements());
        model.addAttribute("size", pages.getSize());
        model.addAttribute("users", pages.getContent());
        return "/user/list";
}

从前端调用应如下所示

http://localhost:8080/application/user/list?page=0&size=5
http://localhost:8080/application/user/list?page=1&size=5
http://localhost:8080/application/user/list?page=2&size=5

欲知更多详情,请观看以下视频

spring boot:基本分页

spring boot:分页高级

感谢阅读

边银龙
2023-03-14

我会考虑直接在控制器中使用 。然后可以将该对象传递到您的JPA层,在那里它将处理返回结果的数量和大小。

使用 的好处在于它返回一个 对象,该对象可以在前端用于形成前一页/下一页逻辑。

默认情况下,该类使用url参数'page'和'size';因此,page=0&ampsize=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();
}

注意,注释 只是用来设置默认值&;这不是必需的。

在前端,下一个页面调用可以是 next</a>/code;这将返回一个从11到20的帖子列表。

印宏阔
2023-03-14

检查一下。您的控制

@RequestMapping("/top/pages/{pageno}")
    @ResponseBody 
     public List<Post> getAllPosts(@PathVariable("pageno") int pageno, HttpServletRequest req, HttpServletResponse res) throws ServletException {

List<Post> postobj = postDao.getAllPostsByRank(new PageRequest(pageno,10));
return postobj;
}

你的刀

@Transactional
public interface PostDao extends CrudRepository<Post, Long>{

@Query(getAllPostsByRank)
List<Post> getAllPostsByRank(Pageable pageable);

final String getAllPostsByRank= "from Post order by value DESC";
}
 类似资料:
  • 问题内容: 我是ReactJS的新手,正在其中创建一个简单的TODO应用程序。实际上,这是一个非常基本的应用程序,没有数据库连接,任务存储在数组中。我现在想添加分页功能,并添加了“编辑和删除”功能。如何实施?任何帮助将不胜感激。谢谢…!! 问题答案: 我最近在纯React JS中实现了分页。这是一个工作示例:http : //codepen.io/PiotrBerebecki/pen/pEYPbY

  • 我使用的是spring boot 1.2.8,但类不存在。没有这门课最好的方法是什么?

  • 我有以下的请求给管理员和管理员 我想用上面Dto中不为空的字段搜索用户存储库。 示例:如果firstName是“john”,lastName是“smith”,其余字段为空,那么我必须在存储库中搜索firstName是“john”,lastName是“smith”的所有记录(不是或) 我还必须为响应执行分页 我是Spring靴新手,有人能建议我怎么做吗?

  • 如何在Struts 2中为客户端显示实现分页,并将Hibernate作为持久层。 以下是我迄今为止完成的代码: 有没有办法在没有标签的情况下实现这一点?

  • 我不认为所有问题都是对的,因为每次我试图解决问题时,我都会得到一个错误,需要其他类型的。

  • 问题内容: Spring MVC中是否有任何现成的,易于实现的标准分页组件/ tag-lib或代码示例可用于分页? 问题答案: 有关示例,请参见样本中的JPetstore,例如

  • 这类似于这个没有任何答案的问题。我已经阅读了所有关于如何在twitter、facebook和Disqs api中使用游标的内容,以及这篇关于Disqs通常如何构建游标的文章,但我似乎仍然无法理解它们是如何工作的,以及如何在我自己的项目中实现类似的解决方案。有人能具体解释他们背后的不同技术和概念吗?

  • 问题内容: 嗨,我必须在hibernate状态下编写查询 在hibernate状态。我已经发布了有关此主题的查询。但是没人帮我。在hibernate状态下可以编写这样的查询吗?请回复。 问题答案: 您可以使用本机SQL查询 或者您可以使用Hibernate Criteria Restrictions.sqlRestriction 希望能有所帮助。