使用 mongoTemplate 进行分页
2022-09-01 09:07:36
我有一个可分页的查询:
Query query = new Query().with(new PageRequests(page, size))
我如何使用MongoTemplate执行它?我没有看到一个方法返回。Page<T>
我有一个可分页的查询:
Query query = new Query().with(new PageRequests(page, size))
我如何使用MongoTemplate执行它?我没有看到一个方法返回。Page<T>
确实,Pageables没有。MongoTemplate
findXXX
但是您可以使用Spring Repository来实现此目的。PageableExecutionUtils
在您的示例中,它看起来像这样:
Pageable pageable = new PageRequests(page, size);
Query query = new Query().with(pageable);
List<XXX> list = mongoTemplate.find(query, XXX.class);
return PageableExecutionUtils.getPage(
list,
pageable,
() -> mongoTemplate.count(Query.of(query).limit(-1).skip(-1), XXX.class));
就像在原来的Spring Data Repository中一样,它将执行计数请求并将其包装成一个适合您的。PageableExecutionUtils
Page
在这里,你可以看到春天也在做同样的事情。
基于d0x的答案并查看弹簧代码。我正在使用这种变体,它适用于spring-boot-starter-data-mongodb依赖关系,而无需添加spring数据共享。
@Autowired
private MongoOperations mongoOperations;
@Override
public Page<YourObjectType> searchCustom(Pageable pageable) {
Query query = new Query().with(pageable);
// Build your query here
List<YourObjectType> list = mongoOperations.find(query, YourObjectType.class);
long count = mongoOperations.count(query, YourObjectType.class);
Page<YourObjectType> resultPage = new PageImpl<YourObjectType>(list , pageable, count);
return resultPage;
}