Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah SQLx Boleh Mengendalikan Pengimbasan Struktur Bersarang dengan Cekap dalam Pertanyaan Pangkalan Data?
Pengimbasan Struktur Bersarang dengan SQLx
Dalam bidang manipulasi pangkalan data, mengimbas struct bersarang ke dalam entiti pangkalan data boleh menimbulkan cabaran. Mari kita pertimbangkan senario berikut:
Memandangkan Model DB:
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"` }
Teka-teki:
Percubaan untuk mengisi struct Pelanggan menggunakan kod berikut gagal dengan ralat yang menunjukkan bahawa medan destinasi jalan masuk *model.Pelanggan tiada.
customer := models.Customer{} err := db.Get(&customer, `select * from users where>
Penyelesaian:
SQLx menyediakan penyelesaian yang berkuasa untuk mengimbas struct bersarang melalui penggunaan struct terbenam. Daripada mengisytiharkan Alamat sebagai medan dengan teg db individu, kami boleh membenamkannya ke dalam Pelanggan:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address }
Dengan membenamkan struct, medan Alamat dinaikkan pangkat menjadi Pelanggan dan menerima teg db mereka daripada ibu bapa mereka. SQLx kemudiannya akan mengisi medan ini terus daripada hasil pertanyaan.
Nota Penting:
Walaupun pendekatan ini memudahkan pengimbasan, ia juga meratakan output JSON bagi struct. Untuk mengekalkan struktur bersarang asal, pertimbangkan untuk memetakan semula struktur pangkalan data kepada jenis sasaran anda.
Atas ialah kandungan terperinci Bagaimanakah SQLx Boleh Mengendalikan Pengimbasan Struktur Bersarang dengan Cekap dalam Pertanyaan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!