Go言語のGORMを使ってみた①


はじめ

仕事で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)

めんどくさくなってきたので、

あとは公式サイトを参照してくだいさいー