Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan golang untuk melaksanakan pertanyaan data jadual silang

Cara menggunakan golang untuk melaksanakan pertanyaan data jadual silang

PHPz
PHPzasal
2023-03-30 09:07:19671semak imbas

Apabila menggunakan golang untuk membangunkan aplikasi web, anda sering menghadapi situasi di mana anda perlu menanyakan data merentas jadual. Artikel ini akan memperkenalkan cara menggunakan golang untuk menanyakan data merentas jadual.

1. Pernyataan pertanyaan kompaun

Dalam pertanyaan pangkalan data, anda boleh menggunakan pernyataan pertanyaan kompaun untuk menanyakan data merentas jadual. Pernyataan pertanyaan kompaun boleh dilaksanakan melalui pertanyaan bersama dan pertanyaan bersarang. Dalam golang, anda boleh menggunakan fungsi Query dan QueryRow dalam pakej sql untuk melaksanakan pernyataan pertanyaan kompaun.

Berikut ialah kod sampel yang menggunakan pernyataan pertanyaan kompaun untuk menanya data merentas jadual:

func GetUserInfoByName(name string) ([]*User, error) {
    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test")
    if err != nil {
        return nil, err
    }

    rows, err := db.Query("SELECT u.id, u.name, u.age, c.city FROM user u LEFT JOIN city c ON u.city_id = c.id WHERE u.name=?", name)
    if err != nil {
        return nil, err
    }
    defer rows.Close()

    users := make([]*User, 0)

    for rows.Next() {
        u := new(User)
        err := rows.Scan(&u.ID, &u.Name, &u.Age, &u.City)
        if err != nil {
            return nil, err
        }
        users = append(users, u)
    }

    if err := rows.Err(); err != nil {
        return nil, err
    }

    return users, nil
}

Dalam kod sampel di atas, kami menyertai jadual pengguna dan jadual bandar melalui gabungan kiri , tanya ID pengguna, nama, umur dan bandar. Hasil pertanyaan dipetakan ke struktur Pengguna melalui fungsi Imbasan, dan akhirnya hasil pertanyaan dikembalikan.

2. Gunakan rangka kerja ORM

Selain menggunakan pernyataan pertanyaan kompaun, kami juga boleh menggunakan rangka kerja ORM untuk menanyakan data merentas jadual. Rangka kerja ORM memetakan jadual pangkalan data kepada struktur Golang, membolehkan kami mengendalikan pangkalan data dalam cara berorientasikan objek.

Dalam golang, menggunakan rangka kerja ORM memerlukan pemasangan perpustakaan GORM. Berikut ialah kod sampel yang menggunakan GORM untuk menanyakan data merentas jadual:

func GetUserInfoByName(name string) ([]*User, error) {
    db, err := gorm.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
        return nil, err
    }
    defer db.Close()

    var users []*User
    err = db.Table("user").Select("user.id, user.name, user.age, city.city").Joins("LEFT JOIN city city ON user.city_id = city.id").Where("user.name = ?", name).Scan(&users).Error
    if err != nil {
        return nil, err
    }

    return users, nil
}

Dalam kod sampel di atas, kami menggunakan rangka kerja ORM GORM untuk menanyakan data merentas jadual. Gunakan fungsi Jadual untuk memilih jadual untuk disoal, gunakan fungsi Pilih untuk menentukan medan untuk ditanya, gunakan fungsi Joins untuk mengaitkan jadual lain, gunakan fungsi Where untuk menentukan syarat pertanyaan, dan akhirnya gunakan fungsi Scan untuk petakan hasil pertanyaan kepada struktur Pengguna dan kembalikan hasil pertanyaan .

Ringkasan:

Artikel ini memperkenalkan dua kaedah penggunaan golang untuk pertanyaan data merentas jadual: pernyataan pertanyaan kompaun dan rangka kerja ORM. Dalam pembangunan sebenar, pembangun boleh memilih kaedah yang sesuai mengikut keperluan mereka sendiri.

Atas ialah kandungan terperinci Cara menggunakan golang untuk melaksanakan pertanyaan data jadual silang. 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
Artikel sebelumnya:Adakah Golang bagus?Artikel seterusnya:Adakah Golang bagus?