GitHub - volatiletech/sqlboiler: Generate a Go ORM tailored to your database schema. favicon GitHub
GitHub - volatiletech/sqlboiler: Generate a Go ORM tailored to your database schema.
Generate a Go ORM tailored to your database schema. - volatiletech/sqlboiler
GitHub - volatiletech/sqlboiler: Generate a Go ORM tailored to your database schema.

Go のORMライブラリの一つで、特徴としてはDBに接続して、予め作成ずみのテーブルからコードを生成することができる。 よってマイグレーション機能はないのだが、自分のユースケースではその機能は使わないので便利だと思う。

コードの生成は sqlboiler のコマンドラインツールで行う。

生成されるコードは以下の特徴がある。

  • 静的型付けされており、リフレクションを使わないので高速で、コードも追いやすい
  • DBアクセスする関数はcontext.Contextを引数にとる
    • GORMの場合、 WithContext を忘れるとcontextが渡せず、特に初心者だと忘れがち
  • テンプレートを使って生成されるコードをカスタマイズできる

基本的な使い方

ここにはあまり書かない。

  • 接続は database/sqlsql.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

参考資料