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

instruction de requête de pagination golang

PHPz
PHPzoriginal
2023-05-15 09:21:07546parcourir

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
}

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)
}

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!

Déclaration:
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
Article précédent:php en type golangArticle suivant:php en type golang