GORM ORM 入门
GORM 模型定义、AutoMigrate、CRUD、关联查询 Preload
GORM ORM 入门
GORM 是 Go 最流行的 ORM——模型即表结构,链式调用构建查询。
学完本章你将: 掌握 GORM 模型定义、AutoMigrate、CRUD、关联查询。
模型定义
go
import (
"gorm.io/gorm"
"gorm.io/driver/sqlite"
)
type User struct {
gorm.Model // 内嵌 ID/CreatedAt/UpdatedAt/DeletedAt
Name string
Email string `gorm:"uniqueIndex"`
Age int
Posts []Post // 一对多
}
type Post struct {
gorm.Model
Title string
Content string
UserID uint
}
func main() {
db, _ := gorm.Open(sqlite.Open("app.db"), &gorm.Config{})
db.AutoMigrate(&User{}, &Post{}) // 自动建表
}
CRUD
go
// 创建
db.Create(&User{Name: "小明", Email: "xm@test.com", Age: 25})
// 查询
var user User
db.First(&user, 1) // 按主键
db.Where("name = ?", "小明").First(&user)
db.Where("age > ?", 18).Find(&users)
// 更新
db.Model(&user).Update("Age", 26)
db.Model(&user).Updates(User{Age: 26, Name: "小明改"})
// 删除(软删除——设置 DeletedAt)
db.Delete(&user, 1)
关联查询
go
// 预加载
var user User
db.Preload("Posts").First(&user, 1)
for _, post := range user.Posts {
fmt.Println(post.Title)
}
// 关联创建
db.Model(&user).Association("Posts").Append(&Post{Title: "新文章"})