Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh memasukkan struct kompleks, termasuk tatasusunan JSON, terus ke dalam pangkalan data PostgreSQL?

Bagaimanakah saya boleh memasukkan struct kompleks, termasuk tatasusunan JSON, terus ke dalam pangkalan data PostgreSQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 17:55:03844semak imbas

How can I insert complex structs, including JSON arrays, directly into a PostgreSQL database?

Bolehkah saya Memasukkan Struct Terus ke dalam DB PostgreSQL?

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.

Penyelesaian Menggunakan Perpustakaan sqlx

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn