Maison > développement back-end > Golang > le corps du texte

Comment paginer les requêtes de base de données dans Golang ?

WBOY
Libérer: 2024-06-02 12:05:56
original
702 Les gens l'ont consulté

Réponse : Oui, vous pouvez utiliser les mots-clés LIMIT et OFFSET pour paginer les requêtes de base de données dans Golang. Les étapes sont les suivantes : Déterminez le nombre d'enregistrements à afficher sur chaque page (pageSize). Calculez le décalage (offset), en partant de 0. Utilisez fmt.Sprintf pour créer dynamiquement la chaîne de requête, en insérant les valeurs pageSize et offset. Utilisez LIMIT pour limiter le nombre d'enregistrements à récupérer et OFFSET pour ignorer les enregistrements précédents. Utilisez l'objet rows pour parcourir l'ensemble de résultats et utilisez la fonction Scan pour extraire la valeur de chaque ligne.

如何对 Golang 中的数据库查询进行分页?

Comment paginer des requêtes de base de données dans Golang

La pagination est une fonctionnalité courante dans les applications Web qui permet aux utilisateurs d'afficher une partie d'une grande quantité de données selon une taille spécifiée. Dans Golang, les requêtes peuvent être paginées à l'aide des mots-clés LIMIT et OFFSET. LIMITOFFSET 关键字对查询进行分页。

package main

import (
    "database/sql"
    "fmt"
)

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 每页显示 10 条记录
    pageSize := 10

    // 获取第 2 页的数据,OFFSET 从 0 开始
    offset := (2 - 1) * pageSize

    // 编写分页查询
    query := fmt.Sprintf(`
        SELECT id, name
        FROM users
        LIMIT %d OFFSET %d
    `, pageSize, offset)

    rows, err := db.Query(query)
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    // 遍历结果集
    for rows.Next() {
        var id int
        var name string
        if err := rows.Scan(&id, &name); err != nil {
            panic(err)
        }
        fmt.Println(id, name)
    }
}
Copier après la connexion

在这个示例中:

  • pageSize 指定每页显示的记录数。
  • offset 根据当前页数计算偏移量,以便跳过前面的记录。
  • query 字符串使用 fmt.Sprintf 动态构建,插入 pageSizeoffset 值。
  • 该查询使用 LIMIT 限制要获取的记录数,并使用 OFFSET 跳过前面的记录。
  • rows 对象用于遍历结果集,Scanrrreee
  • Dans cet exemple :
  • pageSize spécifie le nombre d'enregistrements à afficher par page. 🎜
  • offset Calcule le décalage en fonction du numéro de page actuel pour ignorer les enregistrements précédents. 🎜
  • La chaîne query est construite dynamiquement à l'aide de fmt.Sprintf, en insérant les valeurs pageSize et offset. 🎜
  • Cette requête utilise LIMIT pour limiter le nombre d'enregistrements à récupérer et OFFSET pour ignorer les enregistrements précédents. L'objet 🎜
  • rows est utilisé pour parcourir l'ensemble de résultats, et la fonction Scan est utilisée pour extraire la valeur de chaque ligne. 🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!