0Pricing
Go Academy · Pelajaran

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

  1. database/sql dan Driver
  2. sqlx: Pemindaian Struct dan Kueri Bernama
  3. pgx: Driver PostgreSQL Berkinerja Tinggi
  4. Transaksi dan Migrasi
← Kembali ke Go Academy