根据互联网上的几个链接以及 cvogt 的回答,这是您需要做的最低要求。
请注意,这是 sbt 的通用解决方案。如果您正在处理播放框架,您可能会发现使用相关插件执行此任务更容易
首先,您需要一个新的 sbt 项目,因为需要引用所有库依赖项才能运行 slick 源代码生成器。
使用本教程创建新的 sbt 项目:http://scalatutorials.com/beginner/2013/07/18/getting-started-with-sbt/
最好使用方法Setup using giter8
如果它恰好与 Intellij 一起工作,那么您需要创建文件 project/plugins.sbt 并在此行中插入:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")。
在sbt中执行gen-idea,生成一个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 调用,因为这只是一个“hello world”应用程序。在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需要的Table类