この記事では、Golang でページング クエリを実装する方法を紹介します。
ページング クエリを実行するときは、次の 3 つの重要なパラメータを理解する必要があります。
Golang では、さまざまな方法でページング クエリを実装できます。この記事では 2 つの実装方法を紹介します。
方法 1: データベースの LIMIT 句と OFFSET 句を使用する
Golang では、SQL ステートメントで LIMIT 句と OFFSET 句を使用して、データベース内のデータをページ単位でクエリできます。 MySQL データベースの場合、これを実行できます。
func getPageData(pageSize int, pageNum int) ([]*Record, error) { offset := (pageNum - 1) * pageSize rows, err := db.Query("SELECT * FROM my_table LIMIT ? OFFSET ?", pageSize, offset) if err != nil { return nil, err } defer rows.Close() var records []*Record for rows.Next() { record := new(Record) if err := rows.Scan(&record.Field1, &record.Field2, &record.Field3); err != nil { return nil, err } records = append(records, record) } if err := rows.Err(); err != nil { return nil, err } return records, nil }
getPageData 関数で、ページごとのレコード数 pageSize と表示されるページ数 pageNum を渡します。次に、pageNum と pageSize に基づいてオフセット offset を計算し、LIMIT 句と OFFSET 句を使用して、データベースからページ番号に対応するデータ レコードを取得します。
関数の最後にデータベース クエリの行オブジェクトを閉じて、エラーを処理する必要があることに注意してください。
方法 2: Golang の組み込みスライスと配列をページングに使用する
データベースの LIMIT 句と OFFSET 句を使用することに加えて、Golang の組み込みスライスと配列をページングに使用することもできます。ページング。まず、すべてのクエリ結果を取得し、渡されたパラメータに従ってページ分割する必要があります。
func getPageData(data []*Record, pageSize int, pageNum int) ([]*Record, error) { // 计算起始和结束下标 start := (pageNum - 1) * pageSize end := start + pageSize // 处理边界情况,确保不越界 if start > len(data)-1 { return nil, errors.New("Page not found") } if end > len(data) { end = len(data) } // 截取数据切片 result := data[start:end] return result, nil }
getPageData 関数では、すべてのクエリ結果データ、ページごとのレコード数 pageSize、および表示されるページ数 pageNum を渡します。次に、pageSize と pageNum に基づいてインターセプトするデータの開始添え字と終了添え字を計算し、Golang の組み込みスライスを使用してクエリ結果をページ分割します。
境界を越えないように境界状況に対処する必要があることに注意してください。
概要
この記事では、Golang でページング クエリを実装する 2 つの方法を紹介します。データベースの LIMIT 句と OFFSET 句を使用する方法と、Golang の組み込みスライスとページング配列を使用する方法です。どちらの方法にも独自の長所と短所があり、どちらの方法を使用するかは、プロジェクトの実際のニーズによって異なります。
以上がGolangでページネーションを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。