- database/sql – 內建無需額外安裝
- github.com/jmoiron/sqlx – 是
database/sql
超集,增加了scan
內容到struct
- gorm.io/gorm – 全功能ORM , 和java的一些 orm 類似。 可以設定 關聯 等。
本文章簡單介紹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/