dri*_*den 5 spring spring-data
我正在调用分页服务,我可以使用如下代码遍历所有分页集合:
Pageable pageable = PageRequest.of(0,100);
Page<Event> events = eventsService.getEventsPage(pageable);
while(!events.isLast()) {
doStuff(events)
events = eventsService.getEventsPage(events.nextPageable())
}
doStuff(events) // rest of events
Run Code Online (Sandbox Code Playgroud)
有更优雅的解决方案吗?我需要分页,否则系统将耗尽内存。
我觉得必须声明doStuff两次服务电话在某种程度上是脆弱的。如果当前页面已经是最后一页,您可以利用nextPageable()将为您提供单例的事实。unpaged
Pageable pageable = PageRequest.of(0,100);
do {
Page<Event> events = eventsService.getEventsPage(pageable);
doStuff(events)
pageable = events.nextPageable();
} while(pageable.isPaged())
Run Code Online (Sandbox Code Playgroud)
这是 的文档nextPageable()。
/**
* Returns the {@link Pageable} to request the next {@link Slice}. Can be {@link Pageable#unpaged()} in case the
* current {@link Slice} is already the last one. Clients should check {@link #hasNext()} before calling this method.
*
* @return
* @see #nextOrLastPageable()
*/
Pageable nextPageable();
Run Code Online (Sandbox Code Playgroud)
Pageable#unpaged()将返回一个返回 的单false例isPaged()。
| 归档时间: |
|
| 查看次数: |
3933 次 |
| 最近记录: |