Golangを使って、登録したIDの取得するのを度々忘れるので、メモとして残します。
GORMってなに
GORMとは、Golangで利用するORMのライブラリになります。
ORM以外にも、DBのマイグレーション管理などもできます。
ORMやマイグレーションて何?って思った方もいると思いますので簡単に説明します。
ORマッパー
ORMはO/Rマッパーの略で、OはオブジェクトでRはリレーションになります。
オブジェクト指向言語間のデータのやりとりを行うことです。
DBマイグレーション
データベースの処理を管理することを指します。
テーブルの作成やテーブルの変更などをプログラムで管理します。
昔のGooseとか結構使い勝手が良かったのですが、今はどれが良いか正直好みによります。
実装
最初使い方が分からずにいろいろ失敗はしたのですが、下記が成功例になります。
簡単なインサート処理を行なって、登録したデータのPrimary Keyを取得する処理です。
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/postgres"
"log"
)
type Hoge struct {
HogeID int `gorm:"primary_key"`
}
func main() {
db, err := gorm.Open("postgres", "host=myhost user=gorm dbname=gorm sslmode=disable password=mypassword")
var hoge Hoge
db.Create(&hoge)
log.Println(hoge)
defer db.Close()
}
12行目のgorm.OpenでPostgreSQLのコネクタを作成し、14行目のdb.Createでデータを作っています。
インサートの中身は、7行目にある構造体HogeでHogeIDというプライマリーキーになります。
&hogeにインサートしたIDが入る仕組みになっています。
注意点
構造体のタグの記述方法に失敗していた。
最初は、この書き方で取れると思っていた。
HogeID int `gorm:column:"hoge_id"`
これでは取得する事が出来ませんでした。
次に書いたのがこれです。
HogeID int `gorm:"AUTO_INCREMENT"`
結局、どれも取れませんでした。
1番目の構造体が取得できなかった原因は、タグ・アノテーションの書き方が間違っていたからかもしれません(2021-07-11 追記)。
正しい書き方は、下記になります。
HogeID int `gorm:"column:hoge_id"
まとめ
GolangのGORMを使ってインサートしたIDを取得できます。
primary_keyにするとうまく取得できるので、取得できない場合は構造体を確認してみてください。
-
Golang Ginを使ったパラメータの取得
今回はGinのパラメータを取得方法について書いていきます。 取得するパラメータの種類として、パスの中にあるIDやクエリーストリング、フォームのパラメータについてここでは解説しています。 パスにあるパラメータの取得 URIの中で指定したIDな ...続きを見る