Maison > développement back-end > Golang > Comment SQLx peut-il gérer efficacement l'analyse de structures imbriquées dans les requêtes de base de données ?

Comment SQLx peut-il gérer efficacement l'analyse de structures imbriquées dans les requêtes de base de données ?

Susan Sarandon
Libérer: 2024-12-10 11:00:13
original
467 Les gens l'ont consulté

How Can SQLx Efficiently Handle Nested Struct Scanning in Database Queries?

Analyse de structures imbriquées avec SQLx

Dans le domaine des manipulations de bases de données, l'analyse de structures imbriquées dans des entités de base de données peut poser un défi. Considérons le scénario suivant :

Étant donné le modèle de base de données :

type Customer struct {
   Id      int     `json:"id" db:"id"`
   Name    string  `json:"name" db:"name"`
   Address Address `json:"adress"`
}

type Address struct {
   Street string `json:"street" db:"street"`
   City   string `json:"city" db:"city"`
}
Copier après la connexion

L'énigme :

Tentative de remplissage la structure Customer utilisant le code suivant échoue avec une erreur indiquant que le champ de destination de la rue dans *models.Customer est manquant.

customer := models.Customer{}
err := db.Get(&customer, `select * from users where>
Copier après la connexion

La solution :

SQLx fournit une solution puissante pour analyser les structures imbriquées grâce à l'utilisation de structures intégrées. Au lieu de déclarer l'adresse en tant que champ avec des balises db individuelles, nous pouvons l'intégrer dans Customer :

type Customer struct {
   Id     int    `json:"id" db:"id"`
   Name   string `json:"name" db:"name"`
   Address
}
Copier après la connexion

En intégrant la structure, les champs d'adresse sont promus dans Customer et reçoivent leurs balises db de leur parent. SQLx remplira ensuite ces champs directement à partir du résultat de la requête.

Remarque importante :

Bien que cette approche simplifie l'analyse, elle aplatit également la sortie JSON de la structure. Pour conserver la structure imbriquée d'origine, envisagez de remapper la structure de la base de données sur votre type de cible.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal