2017-08-28 197 views
4

我想了解弹簧5的反应部分。我创建了简单的休息终点找到所有使用弹簧web-flux和弹簧数据反应(mongo)的实体,但没有看到如何实现分页。有没有什么办法来实现春季webflux分页和弹簧数据反应

这是我在科特林简单的例子:

@GetMapping("/posts/") 
fun getAllPosts() = postRepository.findAll() 

这是否意味着反应终点不需要分页?有一种方法可以使用这个堆栈从服务器端实现分页吗?

+0

[Spring自定义查询与可分页]的可能重复(https://stackoverflow.com/questions/27296533/spring-custom-query-with-pageable) – Makoto

回答

6

Spring Data中的反应支持不提供Page返回类型的方法。尽管如此,Pageable参数在驱动程序上传递limitoffset的方法签名中也受支持,因此该存储本身返回发出请求范围的Flux<T>

Flux<Person> findByFirstname(String firstname, Pageable pageable); 

欲了解更多信息,请看看在当前Reference Documentation for 2.0.RC2Spring Data Examples

0

流量提供skiptake方法来获得支持分页,并且还可以使用filtersort筛选和排序结果。

以下代码适用于我。

@GetMapping("") 
public Flux<Post> all(@RequestParam(value = "q", required = false) String q, 
         @RequestParam(value = "page", defaultValue = "0") long page, 
         @RequestParam(value = "size", defaultValue = "10") long size) { 
    return this.postRepository.findAll() 
     .filter(p -> Optional.ofNullable(q).map(key -> p.getTitle().contains(key) || p.getContent().contains(key)).orElse(true)) 
     .sort(comparing(Post::getCreatedDate).reversed()) 
     .skip(page * size).take(size); 
} 
相关问题