GitHub
GitHub - volatiletech/sqlboiler: Generate a Go ORM tailored to your database schema.
Generate a Go ORM tailored to your database schema. - volatiletech/sqlboiler
Go のORMライブラリの一つで、特徴としてはDBに接続して、予め作成ずみのテーブルからコードを生成することができる。 よってマイグレーション機能はないのだが、自分のユースケースではその機能は使わないので便利だと思う。
コードの生成は sqlboiler
のコマンドラインツールで行う。
生成されるコードは以下の特徴がある。
- 静的型付けされており、リフレクションを使わないので高速で、コードも追いやすい
- DBアクセスする関数はcontext.Contextを引数にとる
- GORMの場合、
WithContext
を忘れるとcontextが渡せず、特に初心者だと忘れがち
- GORMの場合、
- テンプレートを使って生成されるコードをカスタマイズできる
基本的な使い方
ここにはあまり書かない。
- 接続は
database/sql
のsql.Open
- 参照や更新は、生成されたコードの
models.XXX
にメソッドが生えている
Eager Loading
バルクインサート
SQLBoilerでBulk Insertを実現する方法 - Qiita https://github.com/volatiletech/sqlboiler/issues/101
Raw SQLを書いて実行する
TIPS
mysqlでBOOLEAN (TINYINT(1)と等価) を数値型として扱いたい
https://github.com/volatiletech/sqlboiler/issues/80 https://github.com/volatiletech/sqlboiler/blob/4dd76363f68e73f9bd52ca984446db69a2282981/drivers/sqlboiler-mysql/driver/mysql.go#L516