Maison  >  Article  >  développement back-end  >  Comment utiliser Golang pour implémenter une requête de données croisées

Comment utiliser Golang pour implémenter une requête de données croisées

PHPz
PHPzoriginal
2023-03-30 09:07:19716parcourir

Lorsque vous utilisez Golang pour développer des applications Web, vous rencontrez souvent des situations dans lesquelles vous devez interroger des données sur des tables. Cet article explique comment utiliser Golang pour interroger des données sur des tables.

1. Instructions de requête composées

Dans les requêtes de base de données, vous pouvez utiliser des instructions de requête composées pour interroger des données sur des tables. Les instructions de requête composées peuvent être implémentées via des requêtes conjointes et des requêtes imbriquées. Dans Golang, vous pouvez utiliser les fonctions Query et QueryRow du package SQL pour implémenter des instructions de requête composées.

Ce qui suit est un exemple de code qui utilise des instructions de requête composées pour interroger des données sur des tables :

func GetUserInfoByName(name string) ([]*User, error) {
    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test")
    if err != nil {
        return nil, err
    }

    rows, err := db.Query("SELECT u.id, u.name, u.age, c.city FROM user u LEFT JOIN city c ON u.city_id = c.id WHERE u.name=?", name)
    if err != nil {
        return nil, err
    }
    defer rows.Close()

    users := make([]*User, 0)

    for rows.Next() {
        u := new(User)
        err := rows.Scan(&u.ID, &u.Name, &u.Age, &u.City)
        if err != nil {
            return nil, err
        }
        users = append(users, u)
    }

    if err := rows.Err(); err != nil {
        return nil, err
    }

    return users, nil
}

Dans l'exemple de code ci-dessus, nous joignons la table user et la table city via une jointure gauche pour interroger l'ID, le nom, l'âge et l'identité de l'utilisateur. La ville où il se trouve. Les résultats de la requête sont mappés à la structure Utilisateur via la fonction Scan, et enfin les résultats de la requête sont renvoyés.

2. Utilisez le framework ORM

En plus d'utiliser des instructions de requête composées, nous pouvons également utiliser le framework ORM pour interroger des données dans des tables. Le framework ORM mappe les tables de base de données aux structures Golang, nous permettant d'exploiter la base de données de manière orientée objet.

En golang, l'utilisation du framework ORM nécessite l'installation de la bibliothèque GORM. Voici un exemple de code permettant d'utiliser GORM pour interroger des données sur des tables :

func GetUserInfoByName(name string) ([]*User, error) {
    db, err := gorm.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
        return nil, err
    }
    defer db.Close()

    var users []*User
    err = db.Table("user").Select("user.id, user.name, user.age, city.city").Joins("LEFT JOIN city city ON user.city_id = city.id").Where("user.name = ?", name).Scan(&users).Error
    if err != nil {
        return nil, err
    }

    return users, nil
}

Dans l'exemple de code ci-dessus, nous utilisons le framework ORM GORM pour interroger des données sur des tables. Utilisez la fonction Table pour sélectionner la table à interroger, utilisez la fonction Select pour spécifier les champs à interroger, utilisez la fonction Joins pour associer une autre table, utilisez la fonction Where pour spécifier les conditions de requête, et enfin utilisez la fonction Scan pour mappez les résultats de la requête à la structure User et renvoyez les résultats de la requête.

Résumé :

Cet article présente deux méthodes d'utilisation de Golang pour interroger des données sur des tables : les instructions de requête composées et le framework ORM. Dans le développement réel, les développeurs peuvent choisir une méthode appropriée en fonction de leurs propres besoins.

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:Est-ce que Golang est bon ?Article suivant:Est-ce que Golang est bon ?