Rumah  >  Artikel  >  pembangunan bahagian belakang  >  ORM dalam Beego - menggunakan Xorm untuk menjadikan operasi pangkalan data lebih mudah

ORM dalam Beego - menggunakan Xorm untuk menjadikan operasi pangkalan data lebih mudah

PHPz
PHPzasal
2023-06-22 13:16:355975semak imbas

Beego ialah rangka kerja web bahasa Go sumber terbuka yang menyediakan banyak alatan dan perpustakaan yang mudah untuk mempercepatkan pembangunan web. Antaranya, perpustakaan ORM (Object Relational Mapping) adalah komponen yang sangat penting, yang membolehkan pembangun melakukan operasi data dengan lebih mudah. Dalam Beego, Xorm ialah perpustakaan operasi pangkalan data berasaskan ORM, yang sangat mudah dan cekap untuk digunakan. Artikel ini akan memperkenalkan cara menggunakan Xorm untuk mengendalikan pangkalan data.

1. Pengenalan kepada Xorm

Xorm ialah perpustakaan ORM berdasarkan bahasa Go, serupa dengan Hibernate atau MyBatis Java. Ia menyokong pelbagai pangkalan data hubungan, termasuk MySQL, PostgreSQL, SQLite, dll. Tidak seperti perpustakaan ORM bahasa Go yang lain, Xorm menggunakan mekanisme pantulan untuk memetakan hubungan antara objek dan jadual, menjadikannya lebih fleksibel dan mudah.

2. Pasang Xorm

Sebelum menggunakan Xorm, kita perlu memasangnya terlebih dahulu. Anda boleh menggunakan alat baris arahan Go untuk memasang Xorm:

go get xorm.io/xorm

3. Konfigurasikan Xorm

Menggunakan Xorm dalam Beego adalah sangat mudah Anda hanya perlu menentukan jenis pangkalan data, alamat pangkalan data, nama pengguna dan Kata laluan dan maklumat lain boleh:

# 配置数据库类型
db_driver = mysql
# 配置数据库地址
db_address = root:password@/testdb?charset=utf8
# 配置数据库最大闲置连接数
db_max_idle_conn = 10
# 配置数据库最大连接数
db_max_open_conn = 100

4. Mengendalikan pangkalan data

  1. Tentukan struktur

Langkah pertama untuk menggunakan Xorm untuk mengendalikan pangkalan data adalah untuk menentukan struktur jadual pangkalan data dalam struktur, dan menggunakan tag tag untuk mengenal pasti hubungan pemetaan antara struktur dan jadual pangkalan data. Sebagai contoh, kami mempunyai jadual data bernama user dengan struktur berikut:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Kemudian struktur yang kami tentukan ialah:

type User struct {
    Id    int    `xorm:"pk autoincr"`
    Name  string `xorm:"varchar(255) notnull"`
    Email string `xorm:"varchar(255) notnull"`
    Age   int    `xorm:"int(11) notnull"`
}
  1. Buat enjin

Sebelum mengendalikan pangkalan data, kita perlu mencipta enjin Xorm terlebih dahulu. Enjin adalah jambatan antara Xorm dan pangkalan data Kami menggunakannya untuk melaksanakan pelbagai operasi pangkalan data, seperti sisipan, pertanyaan, kemas kini dan pemadaman. Cara untuk mencipta enjin adalah seperti berikut:

import (
    "xorm.io/xorm"
    "github.com/astaxie/beego"
)

var (
    engine *xorm.Engine
)

func init() {
    dbDriver := beego.AppConfig.String("db_driver")
    dbAddress := beego.AppConfig.String("db_address")
    engine, err = xorm.NewEngine(dbDriver, dbAddress)
    if err != nil {
        beego.Error(err)
    }

    // 配置连接池
    maxIdleConn := beego.AppConfig.DefaultInt("db_max_idle_conn", 10)
    maxOpenConn := beego.AppConfig.DefaultInt("db_max_open_conn", 100)
    engine.SetMaxIdleConns(maxIdleConn)
    engine.SetMaxOpenConns(maxOpenConn)
}
  1. Masukkan data

Memasukkan data menggunakan Xorm adalah sangat mudah, cuma buat objek struktur dan tetapkan nilai, kemudian gunakan fungsi engine.Insert() Itu sahaja:

func insertUser(user *User) error {
    _, err := engine.Insert(user)
    if err != nil {
        beego.Error(err)
        return err
    }
    return nil
}
  1. Data pertanyaan

Ia juga sangat mudah untuk menggunakan Xorm untuk membuat pertanyaan data. Anda boleh menggunakan fungsi seperti engine.Where() dan engine.And() untuk menentukan syarat pertanyaan, dan anda juga boleh menggunakan engine.OrderBy() untuk menentukan kaedah pengisihan. Hasil pertanyaan boleh diproses menggunakan fungsi seperti Find(), Get() dan Iterate():

func getUserByName(name string) (*User, error) {
    user := &User{}
    _, err := engine.Where("name = ?", name).Get(user)
    if err != nil {
        beego.Error(err)
        return nil, err
    }
    return user, nil
}

func getAllUsers() ([]*User, error) {
    users := make([]*User, 0)
    err := engine.Find(&users)
    if err != nil {
        beego.Error(err)
        return nil, err
    }
    return users, nil
}
  1. Kemas kini data

Mengemas kini data menggunakan Xorm juga sangat mudah , cuma Anda perlu mencipta objek struktur dan tetapkan nilai, kemudian gunakan fungsi engine.Id() dan engine.Update():

func updateUser(user *User) error {
    _, err := engine.Id(user.Id).Update(user)
    if err != nil {
        beego.Error(err)
        return err
    }
    return nil
}
  1. Padam data

Ia juga mudah untuk memadam data menggunakan Xorm . Anda boleh menggunakan fungsi engine.Id() dan engine.Delete() untuk menentukan data yang akan dipadamkan:

func deleteUser(id int) error {
    _, err := engine.Id(id).Delete(&User{})
    if err != nil {
        beego.Error(err)
        return err
    }
    return nil
}

5. Ringkasan

Xorm ialah ORM bahasa Go yang sangat mudah dan mudah digunakan perpustakaan. Ia menggunakan mekanisme pantulan untuk memetakan hubungan antara objek dan jadual pangkalan data, supaya pembangun tidak perlu menulis pernyataan SQL secara manual, menjadikan operasi pangkalan data lebih mudah dan lebih cekap. Menggunakan Xorm dalam Beego adalah sangat mudah. ​​Hanya konfigurasikan maklumat pangkalan data dan ikuti proses di atas.

Atas ialah kandungan terperinci ORM dalam Beego - menggunakan Xorm untuk menjadikan operasi pangkalan data lebih mudah. 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