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

Comment implémenter la pagination des requêtes dans Golang

PHPz
Libérer: 2023-04-05 14:10:13
original
1927 Les gens l'ont consulté

Le langage Go est l'un des langages de programmation les plus populaires ces dernières années. Avec ses avantages de haute efficacité et de forte évolutivité, il est largement utilisé par de plus en plus de développeurs dans divers domaines. Parmi eux, la fonction de pagination des requêtes de Golang est largement utilisée et constitue une exigence fonctionnelle courante dans de nombreuses applications au niveau de l'entreprise. Cet article présentera en détail les méthodes d'implémentation et des exemples de pagination de requêtes Golang.

1. Méthode de mise en œuvre de la pagination des requêtes Golang

1. Adopter le framework ORM

ORM (Object-Relation Mapping) est une technologie de programmation qui mappe des objets et des bases de données relationnelles, et c'est aussi une idée de programmation. Le framework ORM est une technologie relativement mature.Par exemple, GORM dans golang est un framework ORM open source qui peut mapper des structures et des tables de base de données et convertir les opérations CRUD en instructions de requête de base de données, permettant ainsi le stockage et la lecture des données.

GORM est l'un des frameworks ORM les plus populaires de Golang. Il fournit des opérations API très simples, même les débutants peuvent facilement démarrer. En utilisant GORM, nous pouvons facilement implémenter des requêtes de pagination basées sur SQL. Le code d'implémentation spécifique est le suivant :

func FindPage(pageNum int, pageSize int) (users []User, total int64, err error) {
    tx := db.Model(&User{})
    tx.Count(&total)
    err = tx.Offset((pageNum - 1)*pageSize).Limit(pageSize).Find(&users).Error
    if err != nil && err != gorm.ErrRecordNotFound {
        return nil, 0, err
    }
    return
}
Copier après la connexion

Dans le code ci-dessus, nous définissons une fonction nommée FindPage pour implémenter les requêtes de pagination. Tout d’abord, nous obtenons le modèle User via la méthode db.Model(), puis appelons la méthode Count() pour compter le nombre total d’enregistrements interrogés, puis utilisons les méthodes Offset et Limit pour implémenter la pagination, et enfin appelons Find( ; ) méthode pour stocker les résultats de la requête dans la variable utilisateurs. De plus, lors du processus de requête, une attention particulière doit être accordée à la gestion des erreurs afin de garantir la sécurité et la fiabilité des appels de fonction.

2. Fonction de requête de pagination personnalisée

Dans les applications réelles, vous pouvez également définir votre propre fonction de requête de pagination pour mieux répondre aux besoins de votre entreprise. La méthode d'implémentation spécifique est la suivante :

func CustomFindPage(pageNum int, pageSize int, query string) (users []User, total int64, err error) {
    sql := "SELECT * FROM users WHERE 1 = 1 " + query + " ORDER BY created_at DESC LIMIT ? OFFSET ?"
    err = db.Raw(sql, pageSize, (pageNum-1)*pageSize).Scan(&users).Error
    if err != nil && err != gorm.ErrRecordNotFound {
        return nil, 0, err
    }
    err = db.Model(&User{}).Where(query).Count(&total).Error
    if err != nil {
        return nil, 0, err
    }
    return
}
Copier après la connexion

Différente du framework ORM, cette méthode utilise des instructions SQL natives pour l'implémentation, et les conditions de requête et les instructions de requête peuvent être librement définies pour mieux répondre aux besoins de l'entreprise.

2. Exemples de pagination de requêtes Golang

1. Le framework ORM implémente la requête de pagination

Référez-vous au code suivant :

type User struct {
    gorm.Model
    Name string `gorm:"column:name" json:"name"`
    Age  int    `gorm:"column:age" json:"age"`
}

func main() {
    db, err := gorm.Open("mysql", "user:password@tcp(127.0.0.1:3306)/demo_golang?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    var (
        pageNum  = 1
        pageSize = 10
        users    []User
        total    int64
    )
    if users, total, err = FindPage(pageNum, pageSize); err != nil {
        fmt.Printf("查询用户列表失败:%v\n", err)
        return
    }
    fmt.Printf("查询到的用户列表如下:\n%+v\n总记录数:%d\n", users, total)
}
Copier après la connexion

Le code ci-dessus implémente la fonction de requête de pagination basée sur le framework ORM. Parmi eux, vous devez d'abord définir le modèle utilisateur et construire la base de données via GORM. Ensuite, définissez une fonction de requête nommée FindPage(), qui contient deux paramètres, pageNum et pageSize, pour interroger les données du numéro de page spécifié et le nombre d'enregistrements affichés sur chaque page. La fonction renvoie deux valeurs, l'une est la liste des utilisateurs interrogés et l'autre est le nombre total d'enregistrements dans la liste. Enfin, appelez la fonction FindPage() dans la fonction principale pour interroger et afficher les résultats de la requête de pagination.

2. Fonction personnalisée pour implémenter la requête de pagination

Référez-vous au code suivant :

type User struct {
    Name      string `gorm:"column:name" json:"name"`
    Age       int    `gorm:"column:age" json:"age"`
    CreatedAt int64  `gorm:"column:created_at" json:"created_at"`
}

func main() {
    db, err := gorm.Open("mysql", "user:password@tcp(127.0.0.1:3306)/demo_golang?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    var (
        pageNum  = 1
        pageSize = 10
        order    = "DESC"
        field    = "created_at"
        query    = ""
        users    []User
        total    int64
    )
    if users, total, err = CustomFindPage(pageNum, pageSize, query, field, order); err != nil {
        fmt.Printf("查询用户列表失败:%v\n", err)
        return
    }
    fmt.Printf("查询到的用户列表如下:\n%+v\n总记录数:%d\n", users, total)
}
Copier après la connexion

Le code ci-dessus implémente la fonction de pagination de requête basée sur la fonction de requête de pagination personnalisée. Parmi eux, vous devez d'abord définir le modèle User, définir les paramètres de requête (pageNum, pageSize, field, order, query) dans la fonction principale, puis appeler la fonction CustomFindPage() pour implémenter la requête de pagination. Il convient de noter que dans la fonction de requête personnalisée, vous devez séparer manuellement l'instruction SQL et les conditions de requête, et utiliser l'instruction SQL native pour interroger. De plus, nous pouvons modifier davantage la fonction de requête de pagination personnalisée en fonction de besoins spécifiques pour obtenir des requêtes plus flexibles.

3. Résumé

Cet article présente les méthodes d'implémentation et des exemples de pagination de requêtes Golang, de l'utilisation de base du framework ORM aux fonctions de requête de pagination personnalisées, couvrant les méthodes de requête courantes dans les applications pratiques. Que vous soyez un développeur Golang débutant ou expérimenté, vous pouvez apprendre les méthodes de mise en œuvre spécifiques et mieux comprendre les fonctionnalités et technologies du langage Golang.

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
À 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!