🐁
GoでORM(GORM)
ORMとは
- Object Relational Mapping(オブジェクト関係マッピング)
- オブジェクト指向プログラミング言語とRDBMSをいい感じに繋いでくれる技術
- 取引の際には内部でSQLを生成する
メリット
- SQLを書かなくていい
- オブジェクトとして取得できるので扱いやすい
デメリット
- SQLを書かなくていい
- すでにSQLできる人にとっては必要ない
- 意図しないSQLが生成される
GORMとは
- GoでORMを扱いやすくするフレームワーク
実行サンプル(MySQL)
+---------------------+
| Tables_in_sample_db |
+---------------------+
| users |
+---------------------+
+----+-------+
| id | name |
+----+-------+
| 1 | Alex |
| 2 | Bob |
| 3 | Candy |
+----+-------+
package main
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Users struct {
Id int `json:id`
Name string `json:name`
}
func Connect() *gorm.DB {
dsn := "root:pass@tcp(127.0.0.1:3306)/sample_db"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err.Error())
}
return db
}
func main() {
db := Connect()
user := Users{}
users := []Users{}
// SELECT(単体)
db.First(&user, "id=?", 1)
fmt.Println(user)
// > {1 Alex}
// SELECT(複数)
db.Find(&users, "id=?", 2)
fmt.Println(users)
// > [{2 Bob}]
}
その他
チーム開発の場ではより良いかもしれない。
Discussion