Golang 的出色 ORM 库,旨在对开发者友好。
概述
- 全功能 ORM
- 关联(一对一、一对多、多对一、多对多、多态、单表继承)
- 钩子(创建/保存/更新/删除/查找之前/之后)
- 使用
Preload
、Joins
进行预加载
- 事务、嵌套事务、保存点、回滚到已保存点
- 上下文、预处理语句模式、DryRun 模式
- 批量插入、分批查找、使用映射查找/创建、使用 SQL Expr 和上下文估值器进行 CRUD
- SQL 构建器、Upsert、锁定、优化器/索引/注释提示、命名参数、子查询
- 复合主键、索引、约束
- 自动迁移
- 记录器
- 可扩展、灵活的插件 API:数据库解析器(多个数据库、读/写拆分)/Prometheus…
- 每个功能都附带测试
- 对开发者友好
安装
go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite
|
快速入门
package main
import ( "gorm.io/gorm" "gorm.io/driver/sqlite" )
type Product struct { gorm.Model Code string Price uint }
func main() { db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { panic("failed to connect database") }
db.AutoMigrate(&Product{})
db.Create(&Product{Code: "D42", Price: 100})
var product Product db.First(&product, 1) db.First(&product, "code = ?", "D42")
db.Model(&product).Update("Price", 200) db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})
db.Delete(&product, 1) }
|