如何使用带有 Pageable 的 Spring Data JPA 分页来更改数据?
Posted
技术标签:
【中文标题】如何使用带有 Pageable 的 Spring Data JPA 分页来更改数据?【英文标题】:How to use Spring Data JPA Pagination with Pageable for changing data? 【发布时间】:2020-04-26 10:33:50 【问题描述】:我指的是这个博客中的例子 - 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 页)并结束。有没有办法在每次迭代时刷新页码以及总页数或更好的方法?
【问题讨论】:
【参考方案1】:我正在寻找类似的东西 - https://***.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();
想知道是否有更好的方法吗?
【讨论】:
以上是关于如何使用带有 Pageable 的 Spring Data JPA 分页来更改数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Sort 和 Pageable 使用 Spring data JPA 开箱即用地查询数据?
如何使用 Pageable 在 Spring Boot 和 Thymeleaf 中显示按点赞数排序的技能列表?
如何在spring boot中使用Pageable接口从http url中删除/处理不相关或错误的排序参数?
“spring.data.web.pageable.one-indexed-parameters=true”不起作用