Maison >développement back-end >Golang >requête liée à Golang
Introduction
Avec la popularité d'Internet et l'augmentation du volume de données, la manière d'interroger efficacement les données est devenue la priorité de nombreux développeurs. Dans le développement de logiciels, la requête de corrélation est un scénario très courant. Cet article fournira aux lecteurs une méthode de requête rapide et efficace en présentant la méthode de requête associée à Golang.
1. Qu'est-ce qu'une requête associée ?
La requête associative fait référence à une manière d'interroger via la relation entre plusieurs tables de données. Dans la requête, nous comparerons une certaine colonne d’une table avec une certaine colonne d’une autre table pour obtenir les résultats qui doivent être interrogés. Les relations courantes incluent un à un, un à plusieurs, plusieurs à plusieurs, etc.
Par exemple, nous avons deux tables de données : la table des employés et la table des départements. Dans la table des employés et la table des départements, il existe une relation entre les employés et les départements. Chaque employé appartient à un service, nous pouvons donc obtenir des informations sur les employés et les informations sur le service en même temps via la requête associée entre la table des employés et la table des services.
2. Méthode de requête de corrélation dans Golang
Dans Golang, nous pouvons effectuer une requête de corrélation en utilisant les outils ORM. Cet article utilisera gorm comme exemple pour présenter les requêtes associées dans Golang.
En golang, une relation un-à-un signifie que dans deux tables de données, chaque ligne de données ne correspond qu'à une ligne de données dans l'autre table. Lorsque vous utilisez Golang pour effectuer des requêtes individuelles, nous pouvons l'implémenter via des clés étrangères physiques ou des clés étrangères virtuelles.
(1) Clé étrangère physique
Une clé étrangère physique signifie que dans deux tables liées, la valeur d'une colonne dans une table est la valeur correspondant à une colonne dans l'autre table. En Golang, nous pouvons compléter une requête relationnelle individuelle en définissant une structure. Par exemple, nous avons deux structures différentes : Employé et Département. Le code est le suivant :
type Employee struct { ID int Name string HireDate time.Time Department Department } type Department struct { ID int Name string Description string }
Dans la structure Employé, nous complétons les requêtes associées en définissant la structure Département. Cette méthode nécessite l'utilisation de la méthode Joins() lors de l'interrogation pour implémenter les requêtes associées. Par exemple, nous devons interroger les informations sur les employés et les informations sur le service, le code est le suivant :
var employee Employee db.Joins("Department").Find(&employee)
(2) Clé étrangère virtuelle
La clé étrangère virtuelle fait référence à la relation d'association définie par nous-mêmes dans le programme selon les besoins. En Golang, nous pouvons compléter une requête de corrélation un-à-un en ajoutant un champ de relation et en utilisant la table A comme table associée dans la table B. Par exemple, nous devons interroger les informations sur les employés et les informations sur l'entreprise. Le code est le suivant :
type Employee struct { ID int Name string HireDate time.Time CompanyID int } type Company struct { ID int Name string Description string } var employee Employee var company Company db.Model(&employee).Related(&company, "CompanyID")
La relation un à plusieurs signifie que dans deux tables de données, une ligne de données. dans un tableau peut correspondre à l'autre Plusieurs lignes de données dans un tableau. En Golang, nous pouvons effectuer des requêtes d'association un-à-plusieurs en définissant Slice. Par exemple, nous avons deux structures différentes : Département et Employé. Le code est le suivant :
type Department struct { ID int Name string Description string Employees []Employee } type Employee struct { ID int Name string HireDate time.Time DepartmentID int } var department Department db.Preload("Employees").Find(&department)
Dans la structure Département, nous complétons les requêtes associées un à plusieurs en définissant Employees Slice. Lors de l'interrogation, nous devons utiliser la méthode Preload() pour effectuer les requêtes associées.
La relation plusieurs-à-plusieurs signifie que dans deux tables de données, une ligne de données peut correspondre à plusieurs lignes de données dans plusieurs tables en même temps. En Golang, nous pouvons effectuer des requêtes relationnelles plusieurs-à-plusieurs en définissant des tableaux. Par exemple, nous avons deux structures différentes : Produit et Catégorie, le code est le suivant :
type Product struct { ID int Name string Categories []Category `gorm:"many2many:ProductCategories;"` } type Category struct { ID int Name string } var product Product db.Preload("Categories").Find(&product)
Dans la structure Produit, nous complétons la requête relationnelle plusieurs-à-plusieurs en définissant le tableau Catégories. Lors de l'interrogation, nous devons utiliser la méthode Preload() pour effectuer les requêtes associées.
Conclusion
Dans cet article, nous avons présenté la méthode de requête d'association dans Golang, y compris les relations un-à-un, un-à-plusieurs et plusieurs-à-plusieurs. En apprenant les méthodes décrites dans cet article, les lecteurs peuvent effectuer plus facilement des requêtes associées dans Golang et améliorer l'efficacité des requêtes tout en interrogeant efficacement les données.
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!