Dalam PostgreSQL, memasukkan struct ke dalam pangkalan data secara langsung tidak mudah jika medan struct kompleks atau termasuk JSON tatasusunan. Walau bagaimanapun, dengan menggunakan perpustakaan luaran, anda boleh mencapai fungsi sisipan dengan cara yang lebih cekap.
Perpustakaan sqlx (github.com/jmoiron/sqlx) menyediakan penyelesaian yang elegan kepada masalah ini. Untuk menggunakannya, teg dahulu setiap medan struct dengan tag db untuk menentukan nama medan pangkalan datanya.
<code class="go">type ApplyLeave1 struct { LeaveId int `db:"leaveid"` EmpId string `db:"empid"` SupervisorEmpId string `db:"supervisorid"` // ... other fields }</code>
Kemudian, gunakan fungsi NamedExec dalam sqlx untuk memasukkan keseluruhan struct ke dalam pangkalan data.
<code class="go">import ( "github.com/jmoiron/sqlx" "log" ) query := `INSERT INTO TABLENAME(leaveid, empid, supervisorid, ...) VALUES(:leaveid, :empid, :supervisorid, ...)` var leave1 ApplyLeave1 db, err := sqlx.Connect("postgres", "user=foo dbname=bar sslmode=disable") if err != nil { log.Fatalln(err) } _, err = db.NamedExec(query, leave1) if err != nil { log.Fatalln(err) }</code>
Memasukkan Tatasusunan JSON
Untuk mengendalikan tatasusunan JSON dalam struct, anda boleh menggunakan jenis data tatasusunan PostgreSQL dengan menandai medan dengan db:"array".
<code class="go">type CertificateInfo struct { Id int64 `db:"id"` FileName string `db:"filename"` FileType string `db:"filetype"` FileLocation string `db:"filelocation"` } type ApplyLeave1 struct { // ... other fields Certificates []CertificateInfo `db:"certificates,array"` }</code>
Dengan mengikut langkah-langkah ini, anda boleh memasukkan struktur kompleks dengan lancar, termasuk tatasusunan JSON, ke dalam pangkalan data PostgreSQL, memudahkan kod anda dan meningkatkan kecekapan pemasukan data.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memasukkan struct kompleks, termasuk tatasusunan JSON, terus ke dalam pangkalan data PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!