Golangのための素晴らしいORMライブラリは、開発者フレンドリーを目指しています。
概要
- フル機能のORM
- 関連付け(Has One, Has Many, Belongs To, Many To Many, 多様性、単一テーブル継承)
- フック(作成/保存/更新/削除/検索の前/後)
Preload
、Joins
によるイーガーローディング
- トランザクション、ネストされたトランザクション、セーブポイント、セーブポイントへのロールバック
- コンテキスト、プリペアドステートメントモード、ドライランモード
- バッチ挿入、FindInBatches、マップによる検索/作成、SQL式とコンテキストバリューによる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) }
|