slickのcode generatorをmysqlで動かしてみた
slickのcode generatorを使ってみました。
code generatorとは、DBの接続するscalaファイルをsbtコマンドを使うことで作成してくれるものです。
slick/slick-codegen-example · GitHub
では、H2Driverを使っての例なため、MySQLDriverを使ってやってみました。
仕組み
project/Build.scala
の記述を元にDB接続クラスを作成します。
Build.scalaのjdbcドライバをmysqlなどに向けると、その接続先のカラム情報を取得して、そこからscalaファイルを作成します。
この場合、MySQLの指定したDatabaseの全てのテーブルが1ファイルにかかれてしまうため、
Build.scalaではmysqlドライバではなく、H2ドライバを用いてcreate文から出力するようにします。
(自分がやり方を知らないだけで、方法があるのかもしれません。)
create文からのscalaファイル作成
create文からSQLファイルを作る場合、ドライバはH2Driverにします。
参照されるcreate文はBuild.scalaで指定したsqlファイルです。
ハマったポイント
そのまま "show create table" で出力したcreate文ではうまく行きません。
例)int(12) などの (12) があると、動かない。
動かしてみる
そして以下コマンドより、動かすことができます。
% sbt // rootディレクトリで > compile // Daoを作るだけなら > run // 実際にExample.scalaのselectを走らせる場合
compileすると、
target/scala2.11/src_managed/slick/demo2/Tables.scala
に作成されます。
moc-yuto/slick-codegen-example · GitHub
HListにも対応しているので、tuple22問題にも悩まされずに、DBのカラムが多いテーブルのDaoも簡単に作れます。