インターネットで見つかったいくつかのリンクから、またcvogtの回答に基づいて、これはあなたがする必要のある最小限のことです。
これはsbtの一般的なソリューションであることに注意してください。 Play Frameworkを扱っている場合は、関連するプラグインを使用してこのタスクを実行する方が簡単な場合があります。
まず、slickソースジェネレータを実行するために参照する必要があるすべてのライブラリ依存関係があるため、新しいsbtプロジェクトが必要です。
このチュートリアルを使用して新しいsbtプロジェクトを作成します。
できればgiter8を使用したセットアップの方法を使用してください
Intellijで動作する場合は、ファイルproject/plugins.sbt
を作成する必要があります。 次の行の中に挿入します:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
。gen-idea
を実行します sbtでintellijプロジェクトを生成します。
giter8を使用すると、プロジェクトフォルダー内に自動生成されたファイルProjectNameBuild.scalaを取得できます。これを開き、少なくともこれらのライブラリの依存関係を含めます:
libraryDependencies ++= List(
"mysql" % "mysql-connector-java" % "5.1.27",
"com.typesafe.slick" %% "slick" % "2.0.0",
"org.slf4j" % "slf4j-nop" % "1.6.4",
"org.scala-lang" % "scala-reflect" % scala_version
)
ここで、scalaバージョンは変数private val scala_version = "2.10.3"
次に、次のようなカスタムソースコードジェネレーターを作成します。
import scala.slick.model.codegen.SourceCodeGenerator
object CustomSourceCodeGenerator {
import scala.slick.driver.JdbcProfile
import scala.reflect.runtime.currentMirror
def execute(url: String,
jdbcDriver: String,
user: String,
password: String,
slickDriver: String,
outputFolder: String,
pkg: String) = {
val driver: JdbcProfile = currentMirror.reflectModule(
currentMirror.staticModule(slickDriver)
).instance.asInstanceOf[JdbcProfile]
driver.simple.Database.forURL(
url,
driver = jdbcDriver,
user = user,
password = password
).withSession {
implicit session =>
new SourceCodeGenerator(driver.createModel).writeToFile(slickDriver, outputFolder, pkg)
}
}
}
最後に、これをexecute
と呼ぶ必要があります メインプロジェクトオブジェクト内のメソッド。 giter8によって自動生成されたファイルProjectName.scalaを見つけます。
その中にprintln
があります。 これは単なる「HelloWorld」アプリケーションであるため、呼び出します。 println
の上 そのようなものを呼び出す:
CustomSourceCodeGenerator.execute(
url = "jdbc:mysql://127.0.0.1/SOME_DB_SCHEMA?characterEncoding=UTF-8&useUnicode=true",
slickDriver = "scala.slick.driver.MySQLDriver",
jdbcDriver = "com.mysql.jdbc.Driver",
outputFolder = "/some/path",
pkg = "com.pligor.server",
user = "root",
password = "xxxxxyourpasswordxxxxx"
)
このようにして、sbt run
を実行するたびに Slickに必要なテーブルクラスを自動的に生成します