概要
Go言語にて、gormを利用してみました。
構造体を利用してORマッピングを行うことができます。
gormでのモデルの宣言は以下。
import (
"gorm.io/gorm"
)
type User struct {
gorm.Model
Name string
}
gorm.Modelをフィールドに持つことで、自動的に
created_at
,updated_at
,deleted_at
,id
フィールドを付与してくれます。この場合、主キーは自動的にid
になります。
タグでの指定
データベースの構造に対応して、各フィールドの設定を変更したい場合、タグを利用します。
type User struct {
gorm.Model
ID int `gorm:"column:_id"`
Name string `gorm:"primaryKey column:user_name"`
}
上記のようにタグで指定してあげれば、主キーはNameに設定され、db内ではuser_name
フィールドとして保存されます。
えばAUTO_INCREMENTで付与されたフィールドの値をIDとして利用する場合、
u := &User{
Name: "user"
}
result := db.Create(u)
print(u.ID) // AUTO_INCREMENTされた値
u.IDにdb側でレコード作成時に付与された値が格納されますが、
IDにprimarykeyの指定を忘れると、構造体のデフォルト値の0が帰ってきてしまうので注意が必要です。