如何使用Slick的源代码生成器设置用户名和密码?

Geo*_*los 8 mysql slick

按照本页中的说明操作:http://slick.typesafe.com/doc/2.0.0/code-generation.html
我们看到需要类似以下代码段来生成mysql表的模型

val url = "jdbc:mysql://127.0.0.1/SOME_DB_SCHEMA?characterEncoding=UTF-8&useUnicode=true"

val slickDriver = "scala.slick.driver.MySQLDriver"

  val jdbcDriver = "com.mysql.jdbc.Driver"

  val outputFolder = "/some/path"

  val pkg = "com.pligor.server"

  scala.slick.model.codegen.SourceCodeGenerator.main(
    Array(slickDriver, jdbcDriver, url, outputFolder, pkg)
  )
Run Code Online (Sandbox Code Playgroud)

这些参数对于H2数据库来说足够了,因为链接中的示例具有它.

如何包含MySQL数据库的用户名和密码?

Geo*_*los 5

从互联网上的几个链接,也基于cvogt的答案,这是你需要做的最低限度.

请注意,这是sbt的一般解决方案.如果您正在处理Play框架,您可能会发现使用相关插件执行此任务更容易

首先,您需要一个新的sbt项目,因为需要引用所有库依赖项才能运行光滑的源生成器.
使用本教程创建新的sbt项目:http://scalatutorials.com/beginner/2013/07/18/getting-started-with-sbt/
最好使用方法安装程序使用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
  )
Run Code Online (Sandbox Code Playgroud)

其中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)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

最后,您需要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"
)
Run Code Online (Sandbox Code Playgroud)

这样每次执行sbt run时都会自动生成Slick所需的Table类