【问题标题】:Spring Jpa Pageable get content using Java streamSpring Jpa Pageable 使用 Java 流获取内容
【发布时间】:2020-09-25 15:26:43
【问题描述】:

我正在搜索以分页的方式将所有已注册的汽车 100 乘 100 次。

Pageable pageable = PageRequest.of(0, 100);
Page<Car> listOfcars = carService.findAll(pageable);

为了让我进入下一页,我正在通过 while:

while(listOfcars.hasNext()){
   listOfcars = carService.findAll(listOfcars.nextPageable());
   carService.start(listOfcars.getContent());
   log.info("New batch sent" + listOfcars.getTotalElements());
}

有一种方法可以通过 java 流执行此操作,在页面上搜索数据,然后立即搜索序列,而无需通过 while 进行?

【问题讨论】:

  • 不明白你想说什么。再次尝试清除您的帖子。

标签: java spring spring-boot java-8


【解决方案1】:

您可以尝试通过了解可用页面总数(可能首先需要总计数)并将每个页面的数字表示形式存储在一个集合中(假设 pages = [1, 2, ... n] )然后您可以创建一个方法 OperateListOfCars 并使用 pages.stream() 为每个页面调用你的逻辑......也许创建一个 CustomPageResult 包装器并将页面集合放在那里将有助于使代码更干净。

【讨论】:

    【解决方案2】:

    这里不需要流或循环,可以使用getContent方法从Page返回列表中的所有内容

    将页面内容作为列表返回。

    Pageable pageable = PageRequest.of(0, 100);
    Page<Car> listOfcars = carService.findAll(pageable);
    List<Car> cars = listOfCars.getContent();
    

    【讨论】:

      猜你喜欢
      • 2017-01-10
      • 2020-01-19
      • 2016-08-05
      • 2015-07-31
      • 2018-08-08
      • 2021-03-20
      • 1970-01-01
      • 2021-09-14
      • 2020-09-12
      相关资源
      最近更新 更多