Go Academy · Pelajaran

sqlx: Pengimbasan Struct dan Pertanyaan Bernama

Get, Select dan NamedExec dengan sqlx

Pelajaran 2 daripada 413 langkah

sqlx: Pengimbasan Struct dan Pertanyaan Bernama ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.

Apakah itu sqlx?

github.com/jmoiron/sqlx melanjutkan database/sql dengan pengimbasan struktur, pertanyaan bernama dan pengikatan dalam pertanyaan. Ia serasi API dengan database/sql.

sqlx.Open

Buka sambungan pangkalan data menggunakan sqlx dan bukannya sql:

db, err := sqlx.Open("postgres", dsn)
if err != nil { log.Fatal(err) }

Get dan Select

db.Get mengimbas satu baris ke dalam struktur; db.Select mengimbas beberapa baris ke dalam hirisan:

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 lajur kepada medan struktur menggunakan tag db:

type User struct {
    ID    int    `db:"id"`
    Name  string `db:"name"`
    Email string `db:"email"`
}

Pertanyaan bernama

Gunakan parameter bernama dengan sintaks :name dan hantar struktur atau peta:

query := "INSERT INTO users (name, email) VALUES (:name, :email)"
_, err := db.NamedExecContext(ctx, query, user)

sqlx.In

sqlx.In mengembangkan hirisan 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) menukar ruang letak ? (yang digunakan oleh sqlx.In) kepada format khusus pemacu ($1, $2 untuk PostgreSQL):

StructScan

Imbas baris individu 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 melaksanakan pertanyaan dan mencetuskan panik apabila berlaku ralat — berguna untuk migrasi skema atau persediaan ujian apabila ralat sentiasa membawa maut.

db.MustExec(schema)

Unsafe

db.Unsafe() memulangkan versi yang mengabaikan lajur yang tidak dipetakan secara senyap, bukannya memulangkan ralat — berguna apabila SELECT memulangkan lebih banyak lajur daripada medan yang tersedia dalam struktur.

sqlx berbanding ORM

sqlx memberikan kawalan SQL penuh dengan pengikatan struktur natif Go. ORM seperti GORM menyembunyikan SQL tetapi boleh menjana pertanyaan yang tidak dijangka. Gunakan sqlx apabila anda mahukan SQL yang jelas dengan pengimbasan yang mudah digunakan.

Semakan Pantas

Apakah yang dilakukan oleh db.SelectContext dalam sqlx?

Ringkasan: sqlx

Perkara utama:

  • Get/Select mengimbas terus ke dalam struktur menggunakan tag db
  • Pertanyaan bernama dengan sintaks :name dan NamedExecContext
  • sqlx.In + Rebind untuk klausa IN dengan hirisan
  • StructScan untuk pengimbasan struktur setiap baris dalam gelung
Percuma untuk bermula

Pelajari Go dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “sqlx: Pengimbasan Struct dan Pertanyaan Bernama” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “sqlx: Pengimbasan Struct dan Pertanyaan Bernama”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “sqlx: Pengimbasan Struct dan Pertanyaan Bernama”?

Get, Select dan NamedExec dengan sqlx Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Go Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “sqlx: Pengimbasan Struct dan Pertanyaan Bernama” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. database/sql dan Pemacu
  2. sqlx: Pengimbasan Struct dan Pertanyaan Bernama
  3. pgx: Pemacu PostgreSQL Berprestasi Tinggi
  4. Transaksi dan Migrasi
← Kembali ke Go Academy