Maison > développement back-end > Golang > instruction de requête de pagination golang

instruction de requête de pagination golang

PHPz
Libérer: 2023-05-15 09:21:07
original
538 Les gens l'ont consulté

Il existe de nombreuses façons d'implémenter des requêtes de pagination en langage Go. Cet article présentera l'une des façons de l'implémenter : en utilisant les mots-clés limit et offset. L'implémentation spécifique est la suivante :

func queryData(pageSize, pageNum int) ([]Data, error) {
    // 计算数据偏移量
    offset := (pageNum - 1) * pageSize

    // 拼接查询语句
    query := fmt.Sprintf("SELECT * FROM data LIMIT %d OFFSET %d", pageSize, offset)

    // 执行查询语句并返回结果
    rows, err := db.Query(query)
    if err != nil {
        return nil, err
    }
    defer rows.Close()

    data := []Data{}
    for rows.Next() {
        // 解析查询结果
        var id int
        var name string
        var age int
        err = rows.Scan(&id, &name, &age)
        if err != nil {
            return nil, err
        }

        // 将数据添加到结果集中
        data = append(data, Data{
            ID:   id,
            Name: name,
            Age:  age,
        })
    }

    return data, nil
}
Copier après la connexion

Cette fonction peut accepter deux paramètres : pageSize et pageNum, qui représentent respectivement la taille des données de chaque page et le numéro de page actuel. La fonction utilise en interne ces deux paramètres pour calculer le décalage des données, utilise les mots-clés limit et offset pour fusionner l'instruction de requête, puis exécute l'instruction de requête et analyse l'ensemble de résultats, et enfin ajoute les données à l'ensemble de résultats et les renvoie. .

L'utilisation de cette fonction pour la requête de pagination est très simple. Il vous suffit de spécifier la taille des données de chaque page et le numéro de page actuel. Par exemple, nous pouvons effectuer une requête de pagination basée sur 10 éléments de données par page. Le code pour interroger les données de la page 3 est le suivant :

data, err := queryData(10, 3)
if err != nil {
    log.Fatal(err)
}

// 输出查询结果
for _, d := range data {
    fmt.Printf("ID=%d, Name=%s, Age=%d
", d.ID, d.Name, d.Age)
}
Copier après la connexion

Ce code interrogera les données de la page 3, la taille des données de chaque page est. 10, et envoyez les résultats de la requête à la tour de contrôle. Si une erreur se produit lors de la requête, le programme imprimera le message d'erreur et se terminera.

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!

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