【问题标题】:How can I page up to a certain amount of items?如何分页达到一定数量的项目?
【发布时间】:2021-06-15 19:10:13
【问题描述】:

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

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

【问题讨论】:

    标签: java micronaut


    【解决方案1】:

    “保持简单,愚蠢” ©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);
    

    我不记得语法了。

    【讨论】:

    • 我总共需要 1000 个元素。也就是说,页面大小为 100... 我将有 10 页,每页有 100 个元素。这是一个例子……
    • 我不能一次带上所有元素
    • 您可以运行计数查询来获取记录总数。然后你可以根据页面大小和偏移量计算出你需要发出多少请求。
    • 在我的答案中添加了如何计算记录。剩下的只是数学。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多