[英]Pagination with native query in slick
我在我們的應用程序中使用Slick連接到Postgres數據庫。 我有一個通用的過濾邏輯,其中一個Filter對象將從UI傳遞,它應該返回帶有分頁的結果。 Filter對象應該是通用的,以便可以重復使用。 過濾器對象的偽代碼如下:
Filter = {
type: table
prop: List_of_conditions
page : 1
size : 10
}
目前,我正在從Filter對象構建本機SQL並執行它。 但是,在查詢實際執行之前,我無法使用take
和drop
。 它目前獲得所有結果,然后刪除不必要的記錄。 我知道如何使用光滑的查詢,但不知道如何使用本機查詢分頁?
val res = StaticQuery.queryNA[Entity](queryStr).list.drop((filter.pageNo- 1) * filter.pageSize).take(filter.pageSize)
我正在使用Slick 2.1
使用普通sql時,不能使用集合運算符來構建查詢。 你必須在SQL中完成所有操作:
val limit = filter.pageSize
val offset = (filter.pageNo- 1) * filter.pageSize
val res = StaticQuery.queryNA[Entity](queryStr ++ s" LIMIT $limit OFFSET $offset").list
我沒有測試過,但我建議你嘗試將.list
調用移到最后
val res = StaticQuery.queryNA[Entity](queryStr).drop((filter.pageNo- 1) * filter.pageSize).take(filter.pageSize).list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.