GROM の簡単な紹介:
GORM は
GolangのORMフレームワーク
です
。簡単に言えば、ORM はインスタンス オブジェクトの構文を通じてリレーショナル型を完成させます。
データベース操作技術は
「
Object
/
Relational
Mapping
」
の略称です
。ORMを使用する
このフレームワークにより、データベースをより便利に操作できるようになります。
データベースに接続する
GORM は、MySQL、PostgreSQL、SQLite、SQL Server、TiDB のデータベース タイプを正式にサポートしています
。
追加の指示:
GitHub 上の非常にアクティブな ORM ライブラリである Golangで書かれています
ORMとは何ですか?
オブジェクト - リレーショナル マッピング、つまりオブジェクト - リレーショナル マッピング。ここでの Relation1 はリレーショナル データベースを指します。
その機能は、リレーショナル データベースとオブジェクトの間のマッピングを作成することです。これにより、データベースを具体的に操作するときに、複雑な SQLステートメントを扱う必要がなくなり、通常のオブジェクトの操作と同じように操作するだけで済みます。
特性
- フル機能の ORM
- 関連 (1 つを持つ、多数を持つ、所属する、多対多、ポリモーフィズム、単一テーブルの継承)
- Create、Save、Update、Delete、Find のフックメソッド
Preload
プリロードのサポートJoins
_- トランザクション、ネストされたトランザクション、保存ポイント、保存ポイントへのロールバック
- コンテキスト、プリコンパイル モード、DryRun モード
- バッチ挿入、FindInBatches、マップによる検索/作成、SQL 式の使用、CRUD のコンテキスト値評価
- SQL ビルダー、アップサート、データベース ロック、オプティマイザー/インデックス/コメント ヒント、名前付きパラメーター、サブクエリ
- 複合主キー、インデックス、制約
- 自動移行
- カスタムロガー
- 柔軟で拡張可能なプラグイン API: データベース リゾルバー (複数のデータベース、読み取り/書き込み分離)、Prometheus...
- すべての機能がテストされ、テストされています
- 開発者に優しい
インストール
go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite go get -u gorm.io/driver/mysql 注: ここで使用されるデータベースのタイプでは、そのサフィックス リンク パッケージ名が使用されます。 公式参照ドキュメントのアドレス: GORM Guide | GORM - Golang 用の素晴らしい ORM ライブラリであり、開発者に優しいことを目指しています。 |
クイックスタート
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 { パニック("データベースの接続に失敗しました") } // スキーマを移す db.AutoMigrate(&Product{}) // db.Create(&Productを作成します) {コード: "D42", 価格: 100}) // var product Product db.First(&product, 1) // 根元整型主键查找 db.First(&product, "code = ?","D42") // コード フィールド値が D42 であるレコードを検索します "D42") // コード フィールド値 D42 を持つレコードを検索 // 更新 - 製品の価格を 200 に更新します 。 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) } |