GROM を使用して、Gin でデータベース mysql データを操作する (1)

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) 
}

おすすめ

転載: blog.csdn.net/A_LWIEUI_Learn/article/details/133351317