Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan ORM di Golang

Cara menggunakan ORM di Golang

PHPz
PHPzasal
2023-04-11 09:10:43764semak imbas

Golang ialah bahasa tersusun yang telah digemari oleh semakin ramai pembangun kerana prestasinya yang baik. Dengan pembangunan Golang, semakin banyak senario aplikasi diliputi, termasuk pembangunan web, alat sistem, pangkalan data, dll. Antaranya, operasi pangkalan data juga telah menjadi sebahagian daripada kerja harian pembangun Golang. Dalam operasi pangkalan data, menggunakan rangka kerja ORM boleh menjimatkan masa dan meningkatkan kecekapan pembangunan. Jadi bagaimana untuk menggunakan rangka kerja ORM untuk mengendalikan pangkalan data di Golang? Mari kita ketahui.

ORM (Pemetaan Perhubungan Objek) merujuk kepada menukar data dalam pangkalan data hubungan kepada satu set data berorientasikan objek dengan menggunakan metadata yang menerangkan objek dan perhubungan, dan merangkum operasi pangkalan data dalam lapisan abstraksi, supaya kita tidak perlu mengambil berat tentang operasi SQL yang mendasari semasa proses pengaturcaraan, sekali gus memudahkan kerumitan operasi pangkalan data dan pelaksanaan program.

Pada masa ini, rangka kerja ORM yang lebih popular di Golang termasuk: GORM, XORM, QBS, dsb. Dalam artikel ini, kami akan mengambil GORM sebagai contoh untuk memperkenalkan secara terperinci cara menggunakan rangka kerja ORM di Golang.

1. Pasang GORM

Sebelum anda mula menggunakan GORM, anda perlu memasang pakej pergantungan yang sepadan. Berikut adalah pakej dependency yang perlu dipasang untuk menggunakan GORM:

go get -u github.com/jinzhu/gorm
go get -u github.com/jinzhu/gorm/dialects/mysql

Antaranya, pakej dependency kedua digunakan untuk menyambung ke pangkalan data MySQL.

2. Sambung ke pangkalan data

Sebelum menggunakan GORM untuk mengendalikan pangkalan data MySQL, kita perlu mewujudkan sambungan terlebih dahulu. Dalam GORM, anda boleh menyambung ke pangkalan data MySQL melalui kod berikut:

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

func main() {
    //连接MySQL数据库
    db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        panic("failed to connect database")
    }
    defer db.Close()
}

Dalam kod di atas, kami menyambung ke pangkalan data MySQL melalui fungsi Open(), yang mengandungi nama pengguna MySQL, kata laluan , nama pangkalan data dan maklumat lain . Perlu diingat bahawa menambah "&charset=utf8&parseTime=True&loc=Local" pada penghujung parameter boleh memastikan pengekodan UTF-8 digunakan dan penghuraian jenis masa disokong.

3. Tentukan struktur

Apabila menggunakan rangka kerja ORM, anda perlu mentakrifkan struktur jadual pangkalan data untuk pemetaan dengan jadual dalam pangkalan data. Berikut ialah contoh struktur yang mentakrifkan jadual pengguna:

type User struct {
    gorm.Model
    Name string // 用户名
    Age  int    // 年龄
}

Melalui kod di atas, beberapa medan jadual pengguna dipetakan kepada atribut struktur. Antaranya, "gorm.Model" ialah struktur yang disediakan oleh GORM yang melaksanakan empat medan ID, CreatedAt, UpdatedAt dan DeletedAt Empat medan biasa ini boleh ditambah dengan mudah pada setiap jadual.

4. Cipta jadual data

Selepas menentukan struktur jadual, anda juga perlu mencipta jadual data yang sepadan. Dalam GORM, anda boleh menggunakan fungsi AutoMigrate() untuk membuat jadual data secara automatik. Berikut ialah contoh kod:

func main() {
    //连接MySQL数据库
    db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        panic("failed to connect database")
    }
    defer db.Close()

    //自动创建数据表
    db.AutoMigrate(&User{})
}

Dalam kod di atas, kami menggunakan fungsi AutoMigrate() untuk mencipta jadual pengguna secara automatik Fungsi ini akan mengenal pasti secara automatik sama ada jadual itu tidak wujud , ia akan mencipta jadual baharu Jika ia wujud, maka langkaunya.

5. Data operasi

Selepas menyelesaikan kerja di atas, kami boleh mula mengendalikan data. Dalam GORM, banyak fungsi API disediakan untuk melaksanakan pelbagai operasi CRUD (Buat, Baca, Kemas Kini, Padam). Berikut ialah contoh kod untuk beberapa operasi biasa:

  1. Data baharu
//新建一条用户数据
func CreateUser(u User) error {
    return db.Create(&u).Error
}

Dalam kod di atas, kami menggunakan fungsi Create() untuk melaksanakan operasi mencipta data pengguna baharu.

  1. Data pertanyaan
//查询指定ID的用户数据
func GetUserById(id uint) (User, error) {
    var user User
    return user, db.Where("id = ?", id).First(&user).Error
}

Dalam kod di atas, kami menggunakan fungsi Where() dan First() untuk mendapatkan data pengguna ID yang ditentukan.

  1. Kemas kini data
//更新指定ID的用户数据
func UpdateUser(id uint, name string, age int) error {
    result := db.Model(&User{}).Where("id = ?", id).Update(map[string]interface{}{"name": name, "age": age})
    if result.Error != nil {
        return result.Error
    }

    if result.RowsAffected == 0 {
        return errors.New("未找到符合条件的记录")
    }

    return nil
}

Dalam kod di atas, kami menggunakan fungsi Model(), Where() dan Update() untuk mengemas kini data pengguna bagi ID yang ditentukan beroperasi.

  1. Padam data
//删除指定ID的用户数据
func DeleteUser(id uint) error {
    result := db.Delete(&User{}, id)
    if result.Error != nil {
        return result.Error
    }

    if result.RowsAffected == 0 {
        return errors.New("未找到符合条件的记录")
    }

    return nil
}

Dalam kod di atas, kami menggunakan fungsi Delete() untuk memadamkan data pengguna ID yang ditentukan.

6. Ringkasan

Menggunakan rangka kerja ORM boleh memudahkan kerumitan operasi pangkalan data dan pelaksanaan program, menjimatkan masa pembangunan dan meningkatkan kecekapan pembangunan. Di Golang, menggunakan rangka kerja GORM boleh membantu kami mengendalikan pangkalan data MySQL dengan lebih mudah. Sudah tentu, GORM juga menyediakan banyak operasi lanjutan, yang tidak akan diterangkan di sini. Semoga artikel ini bermanfaat kepada anda.

Atas ialah kandungan terperinci Cara menggunakan ORM di Golang. 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