golang – GORM

本文章簡單介紹Gorm 的操作:

安裝需要的包:

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

gorm.io/driver/mysql 是針對 github.com/go-sql-driver/mysql 進行封裝,是之適用 gorm.io/gorm 接口。

引用包:

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

模型, 是標準的struct,下面包含設置

type UserInfo struct {
	ID       int
	User     string `gorm:"column:user"`
	Password string `gorm:"column:password"`
}

func (UserInfo) TableName() string {
	return "user"
}

以下是列的一些約定:

type Foo struct {
  ID        uint      // 列名是 `id`
  Name      string    // 列名是 `name`
  Birthday  time.Time // 列名是 `birthday`
  CreatedAt time.Time // 列名是 `created_at`
}

默認情況下 ID 是主鍵,可以通過 gorm:"primaryKey" 指定其他的,例如:

UUID   string `gorm:"primaryKey"`

連結Mysql 以及查詢

  db, _ := gorm.Open(mysql.Open("root:xxxx@tcp(127.0.0.1:3306)/test_db?charset=utf8"))

	var user UserInfo
	//db.Where("id = ?", 1).First(&user)

	db.First(&user, "id = ?", 2)
	fmt.Println(user)

	var users []UserInfo
	db.Where("id > ?", 0).Find(&users)
	fmt.Println(users)

更新&刪除

user.User = "xxx"
db.Save(&user)

db.Delete(&user)

Gorm是功能很全面的ORM,全功能ORM也會損耗一些效率。

參考:https://gorm.io/zh_CN/docs/