如何分页到一定数量的项目?

问题描述

我在存储库中进行分页,引入所有项目并在所有项目引入后停止搜索

List<MyList> myList = new ArrayList<>();
var page = Pageable.from(0,500);
Page<MyList> myListPage;
do {
      myListPage = repository.findByStatus(STATUS,page);
      var result = myListPage();
      myList(result);
      page = page.next();
 } while (!myListPage.isEmpty());

但现在我想分页,将物品带到特定数量,例如 1000 件。

当我带了 1000 件物品时,我停止搜索

我该怎么做?

我有一个 PageableRepository 那就是 extends 一个 CruRepository

解决方法

“保持简单,愚蠢”©Kelly Johnson

如果您需要 1000 个元素,为什么不将 1000 个设置为页面大小? 乍一看,我认为没有理由不将页面大小设置为 1000。

Pageable pageRequest = PageRequest.of(0,1000);
Page<YourEntity> results = repository.findAllByStatus(STATUS,pageRequest);

更新: 您可以运行计数查询以获取记录总数。然后你可以根据页面大小和偏移量计算你需要发出多少请求。

long allRecordsNumberWithGivenStatus = repository.countByStatus(status);

long allRecordsNumberWithGivenStatus = repository.countEnityByStatus(status);

我不记得语法了。