使用 mongoTemplate 进行分页
我有一个带有 Pageable 的查询:
I have a Query with Pageable:
Query query = new Query().with(new PageRequests(page, size))
如何使用 MongoTemplate 执行它?我没有看到一个方法返回 Page<T>
.
How can I execute it with MongoTemplate ? I don't see a single method returning Page<T>
.
推荐答案
确实MongoTemplate
没有findXXX
with Pageables.
It's true that the MongoTemplate
doesn't have findXXX
with Pageables.
但是你可以使用 Spring Repository PageableExecutionUtils
来实现.
But you can use the Spring Repository PageableExecutionUtils
for that.
在您的示例中,它看起来像这样:
In your example it would look like this:
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
中.
Like in the original Spring Data Repository, the PageableExecutionUtils
will do a count request and wrap it into a nice Page
for you.
这里你可以看到spring也在做同样的事情.
Here you can see that spring is doing the same.
相关文章