我想了解彈簧5的反應部分。我創建了簡單的休息終點找到所有使用彈簧web-flux
和彈簧數據反應(mongo)的實體,但沒有看到如何實現分頁。有沒有什麼辦法來實現春季webflux分頁和彈簧數據反應
這是我在科特林簡單的例子:
@GetMapping("/posts/")
fun getAllPosts() = postRepository.findAll()
這是否意味着反應終點不需要分頁?有一種方法可以使用這個堆棧從服務器端實現分頁嗎?
我想了解彈簧5的反應部分。我創建了簡單的休息終點找到所有使用彈簧web-flux
和彈簧數據反應(mongo)的實體,但沒有看到如何實現分頁。有沒有什麼辦法來實現春季webflux分頁和彈簧數據反應
這是我在科特林簡單的例子:
@GetMapping("/posts/")
fun getAllPosts() = postRepository.findAll()
這是否意味着反應終點不需要分頁?有一種方法可以使用這個堆棧從服務器端實現分頁嗎?
Spring Data中的反應支持不提供Page
返回類型的方法。儘管如此,Pageable
參數在驅動程序上傳遞limit
和offset
的方法簽名中也受支持,因此該存儲本身返回發出請求範圍的Flux<T>
。
Flux<Person> findByFirstname(String firstname, Pageable pageable);
欲瞭解更多信息,請看看在當前Reference Documentation for 2.0.RC2和Spring Data Examples。
流量提供skip
和take
方法來獲得支持分頁,並且還可以使用filter
和sort
篩選和排序結果。
以下代碼適用於我。
@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);
}
[Spring自定義查詢與可分頁]的可能重複(https://stackoverflow.com/questions/27296533/spring-custom-query-with-pageable) – Makoto