Từ một số liên kết được tìm thấy trên internet và cũng dựa trên câu trả lời của cvogt, đây là điều tối thiểu bạn cần làm.
Lưu ý rằng đây là giải pháp chung cho sbt. Nếu bạn đang xử lý khung chơi, bạn có thể thấy dễ dàng hơn khi thực hiện tác vụ này với plugin có liên quan
Trước hết, bạn cần một dự án sbt mới vì tất cả các phụ thuộc thư viện cần được tham chiếu để chạy trình tạo nguồn mượt mà.
Tạo dự án sbt mới bằng cách sử dụng hướng dẫn này: http://scalatutorials.com/beginner/2013/07/18/getting-started -with-sbt /
Tốt hơn là sử dụng phương pháp Thiết lập bằng giter8
Nếu nó hoạt động với Intellij thì bạn cần tạo tệp project/plugins.sbt
và chèn vào bên trong dòng này:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
.
Thực thi gen-idea
trong sbt để tạo một dự án intellij.
Với giter8, bạn nhận được một tệp được tạo tự động ProjectNameBuild.scala bên trong thư mục dự án. Mở phần này và bao gồm ít nhất các phần phụ thuộc thư viện sau:
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
)
trong đó phiên bản scala là biến private val scala_version = "2.10.3"
Bây giờ, hãy tạo trình tạo mã nguồn tùy chỉnh giống như sau:
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)
}
}
}
Cuối cùng, bạn cần gọi execute
này phương thức bên trong đối tượng dự án chính. Tìm tệp ProjectName.scala được tạo tự động bởi giter8.
Bên trong nó, bạn sẽ tìm thấy một println
gọi vì đây chỉ là một ứng dụng "xin chào thế giới". Trên println
gọi một cái gì đó như vậy:
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"
)
Theo cách này mỗi khi bạn thực thi sbt run
bạn sẽ tự động tạo các lớp Bảng theo yêu cầu của Slick