От няколко връзки, намерени в интернет, а също и въз основа на отговора на cvogt, това е минимумът, който трябва да направите.
Обърнете внимание, че това е общо решение за sbt. Ако имате работа с рамка за игра, може да ви е по-лесно да изпълните тази задача със съответния плъгин
На първо място, имате нужда от нов sbt проект поради всички зависимости от библиотеката, които трябва да бъдат посочени, за да може да работи генераторът на гладки източници.
Създайте новия sbt проект, като използвате този урок:http://scalatutorials.com/beginner/2013/07/18/getting-started -с-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
метод в основния обект на проекта. Намерете файла ProjectName.scala, който беше автоматично генериран от giter8.
Вътре в него ще намерите println
обадете се, тъй като това е просто приложение за "здравей свят". Над 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