Spring Boot GraphQL 實戰 03_分頁、全域性異常處理和非同步載入
阿新 • • 發佈:2021-01-13
> hello,大家好,我是小黑,又和大家見面啦~
>
> 今天我們來繼續學習 Spring Boot GraphQL 實戰,我們使用的框架是 https://github.com/graphql-java-kickstart/graphql-spring-boot
>
> 本期,我們將使用 H2 和 Spring Data JPA 來構建資料庫和簡單的查詢,不熟悉的同學可以自行去網上查閱相關資料學習。
>
> 完整專案 github 地址:https://github.com/shenjianeng/graphql-spring-boot-example
## 分頁查詢
### 基於偏移量的分頁
基於偏移量的分頁,即通過 SQL 的 limit 來實現分頁。
優點是實現簡單,使用成本低。缺點是在資料量過大時,進行大翻頁時可能會有效能問題。
先來編寫 `graphqls` 檔案:
```graphqls
type PageResult{
items:[Student]!
pageNo:Int!
pageSize:Int!
totalCount:Int!
}
type Student{
id:ID!
name:String!
}
type Query{
findAll(pageNo:Int!,pageSize:Int!):PageResult!
}
```
對應的 Java Bean 就不在這裡贅述了,讀者感興趣的話可以自行查詢小黑同學上傳在 github 上的原始碼。
其中,最主要的 `StudentGraphQLQueryResolver ` 原始碼如下:
```java
@Component
@RequiredArgsConstructor
public class StudentGraphQLQueryResolver implements GraphQLQueryResolver {
private final StudentRepository studentRepository;
public Pa