【问题标题】:Pagination in List Java Spring列表Java Spring中的分页
【发布时间】:2021-01-23 12:50:54
【问题描述】:

我正在开发一个 Spring 项目,其中有任务(id、名称)和分配(task_id、名称...)。当我得到任务时,我也得到分配的任务,但我无法实现分页系统。

public List<Tasks> getAllTasks() {
       List<Tasks> task = (List<Tasks>) taskRepository.findAll();
       return task;
   }

这是我当前的代码。我想在每个分页边显示 10 个项目。

我尝试过类似的方法:

   public Page<Tasks> getAllTasks(Long page, Long size){
       List<Tasks> tsk = (List<Tasks>) taskRepository.findAll();
     
       int start =  new PageRequest(page, size).getOffset();
       int end = (start + new PageRequest(page, size).getPageSize()) > tsk.size() ? tsk.size() : (start + new PageRequest(page, size).getPageSize());

       return new PageImpl<Tasks>(tsk.subList(start, end), new PageRequest(page, size), tsk.size());
   }

但它不起作用。

我目前的 JSON 响应如下:

{
   id: 1,
   name: First Task
   assignments: [ 
        {
          id: 1,
          assignment_name: firstassignment
        },
        {
          id: 2,
          assignment_name: secondassignment
        }]
}

我还读到它不需要是一个列表。我愿意接受任何想法。

【问题讨论】:

    标签: java spring sorting spring-data-jpa pagination


    【解决方案1】:

    您可以在findAll 中创建并发送pageable 作为参数以获取数据

    public Page<Tasks> getAllTasks(int page, int size){
        Pageable pageable = PageRequest.of(page, size);
        return taskRepository.findAll(pageable);
    }
    

    一篇关于Spring Data JPA中的分页的好文章here

    【讨论】:

    • 我是否需要添加类似的内容: Page findAll(Long page, Long size);到我的任务存储库?因为我收到了这个错误:没有找到适合的方法 of(java.lang.Long,java.lang.Long)
    • 不要在findAll() 中发送pagesize,仅将pageable 作为参数发送。请参阅答案中的代码。确保在 Repository 中扩展 JpaRepository
    • 我现在就是这样:public List getAllTask​​s() { Pageable pageable = PageRequest.of(page, size);页面 pagedData = taskRepository.findAll(pageable);返回分页数据; }。但我仍然找不到符号页面和大小错误
    • 而且我也收到此错误:不兼容的类型:org.springframework.data.domain.Page 无法转换为 java.util.List
    • 我想通了。谢谢。
    【解决方案2】:
    public List<Tasks>getAllTasks(Long page, Long size) {
       Pageable taskPageable = new PageRequest.of(page, size);
       return taskRepository.findAll(pageable);
    }
    

    我们也可以直接获取List对象,而不是Page对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2013-08-31
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      相关资源
      最近更新 更多