sqlx: Pemindaian Struct dan Kueri Bernama
Get, Select, NamedExec dengan sqlx
sqlx: Pemindaian Struct dan Kueri Bernama adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Apa itu sqlx?
github.com/jmoiron/sqlx memperluas database/sql dengan pemindaian struktur, kueri bernama, dan pengikatan dalam kueri. API-nya kompatibel dengan database/sql.
sqlx.Open
Buka koneksi basis data menggunakan sqlx, bukan sql:
db, err := sqlx.Open("postgres", dsn)
if err != nil { log.Fatal(err) }Get dan Select
db.Get memindai satu baris ke dalam struktur; db.Select memindai beberapa baris ke dalam slice:
var user User
db.GetContext(ctx, &user, "SELECT * FROM users WHERE id=$1", id)
var users []User
db.SelectContext(ctx, &users, "SELECT * FROM users WHERE active=$1", true)Tag struktur
sqlx memetakan kolom ke bidang struktur menggunakan tag db:
type User struct {
ID int `db:"id"`
Name string `db:"name"`
Email string `db:"email"`
}Kueri bernama
Gunakan parameter bernama dengan sintaks :name dan teruskan struktur atau peta:
query := "INSERT INTO users (name, email) VALUES (:name, :email)"
_, err := db.NamedExecContext(ctx, query, user)sqlx.In
sqlx.In memperluas slice menjadi klausa SQL IN:
ids := []int{1, 2, 3}
query, args, _ := sqlx.In("SELECT * FROM users WHERE id IN (?)", ids)
query = db.Rebind(query)
db.SelectContext(ctx, &users, query, args...)Rebind
db.Rebind(query) mengonversi placeholder ? (yang digunakan oleh sqlx.In) ke format khusus pengandar ($1, $2 untuk PostgreSQL):
StructScan
Pindai satu baris ke dalam struktur menggunakan rows.StructScan:
rows, _ := db.QueryxContext(ctx, "SELECT * FROM users")
for rows.Next() {
var u User
rows.StructScan(&u)
}MustExec
db.MustExec menjalankan kueri dan memicu kepanikan jika terjadi galat — berguna untuk migrasi skema atau penyiapan pengujian ketika galat selalu bersifat fatal.
db.MustExec(schema)Unsafe
db.Unsafe() mengembalikan versi yang secara diam-diam mengabaikan kolom yang tidak dipetakan, alih-alih mengembalikan galat — berguna ketika SELECT mengembalikan lebih banyak kolom daripada jumlah bidang dalam struktur.
sqlx vs ORM
sqlx memberi Anda kendali penuh atas SQL dengan pengikatan struktur bergaya Go. ORM seperti GORM menyembunyikan SQL, tetapi dapat menghasilkan kueri yang tidak terduga. Gunakan sqlx saat Anda menginginkan SQL eksplisit dengan pemindaian yang praktis.
Pemeriksaan Singkat
Apa yang dilakukan db.SelectContext dalam sqlx?
Ringkasan: sqlx
Poin-poin penting:
- Get/Select memindai langsung ke dalam struktur menggunakan tag db
- Kueri bernama dengan sintaks :name dan NamedExecContext
- sqlx.In + Rebind untuk klausa IN dengan slice
- StructScan untuk pemindaian struktur per baris dalam perulangan
Pertanyaan yang Sering Diajukan
Apakah pelajaran “sqlx: Pemindaian Struct dan Kueri Bernama” gratis?
Ya — teks lengkap “sqlx: Pemindaian Struct dan Kueri Bernama” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “sqlx: Pemindaian Struct dan Kueri Bernama”?
Get, Select, NamedExec dengan sqlx Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “sqlx: Pemindaian Struct dan Kueri Bernama” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- database/sql dan Driver
- sqlx: Pemindaian Struct dan Kueri Bernama
- pgx: Driver PostgreSQL Berkinerja Tinggi
- Transaksi dan Migrasi