0

我指的是这个博客中的例子 - https://www.logicbig.com/tutorials/spring-framework/spring-data/pagination-returning-page.html

Pageable pageable = PageRequest.of(0, 500);
      while (true) {
          page = repo.findByDept("Sales", pageable);
          int number = page.getNumber();
          int numberOfElements = page.getNumberOfElements();
          int size = page.getSize();
          long totalElements = page.getTotalElements();
          int totalPages = page.getTotalPages();
          System.out.printf("page info - page number %s, numberOfElements: %s, size: %s, "
                          + "totalElements: %s, totalPages: %s%n",
                  number, numberOfElements, size, totalElements, totalPages);
          List<Employee> employeeList = page.getContent();
          employeeList.forEach(employee -> updateDept());
          if (!page.hasNext()) {
              break;
          }
          pageable = page.nextPageable();
      }

在这里,在阅读了第一页之后,我正在修改页面中返回的所有条目的部门。因此,当获取第二页时,总编号。页的变化。这导致只有部分数据被更改。例如,代码检索第 1 页(共 5 页),然后检索第 2 页(共 4 页)和第 3 页(共 3 页)并结束。有没有办法在每次迭代时刷新页码以及总页数或更好的方法?

4

1 回答 1

0

我正在寻找类似的东西 - https://stackoverflow.com/a/38350236/7566942

以下解决方案对我有用。

Pageable pageable = PageRequest.of(0, 500);
      while (true) {
          page = repo.findByDept("Sales", pageable);
          int number = page.getNumber();
          int numberOfElements = page.getNumberOfElements();
          int size = page.getSize();
          long totalElements = page.getTotalElements();
          int totalPages = page.getTotalPages();
          System.out.printf("page info - page number %s, numberOfElements: %s, size: %s, "
                          + "totalElements: %s, totalPages: %s%n",
                  number, numberOfElements, size, totalElements, totalPages);
          List<Employee> employeeList = page.getContent();
          employeeList.forEach(employee -> updateDept());
          if (!page.hasNext()) {
              break;
          }
          //pageable = page.nextPageable();
      }

想知道是否有更好的方法?

于 2020-04-26T12:44:43.727 回答