我怎样才能分页到一定数量的项目?

How can I page up to a certain amount of items?

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

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);

更新: 您可以 运行 计数查询来获取记录总数。然后就可以根据page size和offset来计算自己需要多少请求了。

long allRecordsNumberWithGivenStatus = repository.countByStatus(status);

long allRecordsNumberWithGivenStatus = repository.countEnityByStatus(status);

我不记得语法了。