はじめ
仕事でGORMを使うことになったので、学習目的で記事を書いていくので、
アドバイスがあると大変助かりますm(_ _)m
GORMについて
GO言語用のORMフレームワーク。
DB周りの処理を実装する時にこのフレームワークを使うと便利。
・公式サイト
http://jinzhu.me/gorm/
・ORMについて
こちらの記事わかりやすいので、
わからない方は軽く覗いてみて下さい〜
必要なもの
1.必要最低限のSQLをかける(SELECT,CREATE,INSERT,UPDATE,DELETE,DROP)
2.Go言語を公式ドキュメントを読みながら実装できる(ポインタ、複数戻り値、型宣言など)
3.気合と根性(いらないかも)
準備
sample.go
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
importでGORMと使用するDBのドライバをインポート。
テーブル定義
sample.go
type User struct {
gorm.Model
Name string `gorm:"size:255"`
Password string `gorm:"size:255"`
Email string `gorm:"size:255"`
}
ここで、一つ注意点として,
構造体でカラムを定義する時、変数名は先頭が大文字でなければ行けない。(じゃないとカラムが作成されない)
ここ躓いたので、要注意!!!!
DB接続
db, err := gorm.Open("mysql", "root@/sample?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("failed to connect database")
}
// 実行完了後DB接続を閉じる
defer db.Close()
// ログ出力を有効にする
db.LogMode(true)
テーブル生成
マイグレーションを実行すると
テーブルが無い時は自動生成
あるときはなにもしない
sample.go
// DBエンジンを「InnoDB」に設定
db.Set("gorm:table_options", "ENGINE=InnoDB")
// マイグレーション
db.AutoMigrate(&User{})
}
自動生成されるテーブルは以下
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
| deleted_at | timestamp | YES | MUL | NULL | |
| name | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
insert
// 実データを定義
user := User{Name: "sknaehira", Password: "skanehira", Email:"skanehira@sample.com"}
// insert処理
db.NewRecord(&user);
db.Create(&user);
select
db.Find(&user) // 1レコード
db.Find([]&user) // 全レコード
where句
db.Where("name = ?", "skanehira").First(&user)
めんどくさくなってきたので、
あとは公式サイトを参照してくだいさいー