Golang 的絕佳 ORM 函式庫,旨在對開發人員友善。
概述
- 功能齊全的 ORM
- 關聯(一對一、一對多、多對一、多對多、多型、單表繼承)
- 掛鉤(建立/儲存/更新/刪除/尋找之前/之後)
- 使用
Preload
、Joins
進行熱切載入
- 交易、巢狀交易、儲存點、回滾至儲存點
- 內容、準備好的陳述模式、DryRun 模式
- 批次插入、分批尋找、使用 Map 尋找/建立、使用 SQL Expr 和內容 Valuer 進行 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) }
|