问题描述
我在存储库中进行分页,引入所有项目并在所有项目引入后停止搜索。
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 件物品时,我停止搜索。
我该怎么做?
我有一个 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);
我不记得语法了。