Heim >Backend-Entwicklung >Golang >Wie kann ich verschachtelte Strukturen mit SQLX effizient scannen?

Wie kann ich verschachtelte Strukturen mit SQLX effizient scannen?

DDD
DDDOriginal
2024-11-23 08:55:11522Durchsuche

How Can I Efficiently Scan Nested Structs with sqlx?

Scannen in verschachtelte Strukturen mit SQLX

Verschachtelte Strukturen stellen bei der Verwendung von SQLX eine Herausforderung dar. Die Dokumentation bietet jedoch eine Lösung durch die Verwendung eingebetteter Strukturen.

Eingebettete Strukturen

Sqlx unterstützt eingebettete Strukturen, sodass Sie Feldern mithilfe der Prioritätsregeln von Go Werte zuweisen können für eingebettete Attribute und Methoden.

Code Beispiel

Betrachten Sie den folgenden Code, bei dem „Adresse“ keine eingebettete Struktur ist:

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"`
}

Dieser Code führt zu einem Fehler, wenn versucht wird, in eine Kundenstruktur zu scannen, weil die Adresse Das Feld ist nicht eingebettet und hat kein eigenes Datenbank-Tag.

Um dieses Problem zu beheben, betten Sie die Adresse ein Kunde:

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

Durch das Einbetten der Adresse werden deren Felder (einschließlich Tags) zum Kunden hochgestuft, sodass SQLX sie aus dem Abfrageergebnis füllen kann.

JSON-Ausgabe

Das Einbetten der Adresse reduziert die JSON-Ausgabe, wie unten gezeigt:

{
    "id": 1,
    "name": "foo",
    "street": "bar",
    "city": "baz"
}

An Adresse Auf diese Weise können Sie die DB-Struktur Ihrem ursprünglichen Typ neu zuordnen oder das Abfrageergebnis in eine Zuordnung scannen.

Das obige ist der detaillierte Inhalt vonWie kann ich verschachtelte Strukturen mit SQLX effizient scannen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn