taisablog

taisa's engineer blog

「 Go 」 一覧

Go言語 GORM+GinでTODOリストを作ってみた

2019/07/02   -Go
 

前回の「Go言語 ORMライブラリ GORMの使い方」に続いて「GORM+Gin」でTODOリストを作ってみました。使い方は「GitHubのREADME」を参考にしました。できたものは下記URLから確認できます。装飾は別途やれればと。 http://gin.taisablog.com/todo 事前情報 Webフレームワーク:Gin (https://github.com/gin-gonic/gin) ORM:GORM (https://gorm.io/docs) DB:MySQL ルーティングは通常のフォームだとPUT/DELETEが使えないので以下のようにしました。 [GIN-debug] GET /todo –> main.main.func1 (3 handlers) // 一覧表示 [GIN-debug] POST /todo –> main.main.func2 (3 handlers) // 新規作成 [GIN-debug] GET /todo/:id –> main.main.func3 (3 handlers) // 編集画面表示 [GIN-debug] POST /todo/edit/:id –> main.main.func4 (3 handlers) // 編集 [GIN-debug] POST /todo/delete/:id –> main.main.func5 (3 handlers) // 削除 main.goだけで作成した場合 main.goに全ての処理を記述しています。 package main import ( “github.com/gin-gonic/gin” “github.com/jinzhu/gorm” _ “github.com/jinzhu/gorm/dialects/mysql” “net/http” “strconv” ) type Todo struct { gorm.Model Text string Status uint64 } func main() { db, err := gorm.Open(“mysql”, “gorm:gorm@/sandbox_gin?charset=utf8mb4&parseTime=True&loc=Local”) if err != nil { panic(“データベースへの接続に失敗しました”) } defer db.Close() db.LogMode(true) db.AutoMigrate(&Todo{}) r := …

Go言語 ORMライブラリ GORMの使い方

2019/06/26   -Go
 

Go言語 ORMライブラリのGORMの簡単な使い方を確認してみました。また、公式ドキュメントにしっかりと使い方が書いてありますので基本的にはそちらを参考にしてもらえればと思います(すべてではないですが日本語訳もされています)。その上でクイックスタートを元に簡単な使い方と挙動を確認してみます。 http://gorm.io/ja_JP/docs/ インストール 以下のコマンドでインストールできます。 go get -u github.com/jinzhu/gorm クイックスタート 公式ドキュメントにあるクイックスタートを実行してみました。DBだけsqliteではなくmysqlに変更しています。 package main import ( “github.com/jinzhu/gorm” // _ “github.com/jinzhu/gorm/dialects/sqlite” _ “github.com/jinzhu/gorm/dialects/mysql” ) type Product struct { gorm.Model Code string Price uint } func main() { // db, err := gorm.Open(“sqlite3”, “test.db”) db, err := gorm.Open(“mysql”, “gorm:gorm@/sandbox?charset=utf8mb4&parseTime=True&loc=Local”) if err != nil { panic(“データベースへの接続に失敗しました”) } defer db.Close() // スキーマのマイグレーション db.AutoMigrate(&Product{}) // Create db.Create(&Product{Code: “L1212”, Price: 1000}) // Read var product Product db.First(&product, 1) // idが1の製品を探します db.First(&product, “code = ?”, “L1212”) // codeがL1212の製品を探します // Update – 製品価格を2,000に更新します db.Model(&product).Update(“Price”, 2000) // Delete – 製品を削除します db.Delete(&product) } 実行してみるとproductsテーブルが作成され、以下のカラムとレコードができました。structでは宣言していない、id、created_at、updated_at、deleted_atカラムができ、deleted_atに日付が入りソフトデリートが行われています。 go run main.go gorm.Model gorm.Modelを宣言するとid、created_at、updated_at、deleted_atカラムが自動的に注入されます。また,deleted_atカラムがある場合、Deleteはソフトデリートになります。 参考: http://gorm.io/ja_JP/docs/conventions.html …