Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie richte ich Benutzername und Passwort mit dem Quellcode-Generator von Slick ein?

Aus mehreren Links im Internet und auch basierend auf der Antwort von cvogt ist dies das Minimum, das Sie tun müssen.

Beachten Sie, dass dies eine allgemeine Lösung für sbt ist. Wenn Sie sich mit Play Framework befassen, finden Sie es möglicherweise einfacher, diese Aufgabe mit dem entsprechenden Plugin auszuführen

Zuallererst benötigen Sie ein neues sbt-Projekt wegen all der Bibliotheksabhängigkeiten, die referenziert werden müssen, damit der Slick Source Generator ausgeführt werden kann.
Erstellen Sie das neue sbt-Projekt mit diesem Tutorial:http://scalatutorials.com/beginner/2013/07/18/getting-started -mit-sbt/
Verwenden Sie vorzugsweise die Methode Einrichtung mit giter8

Wenn es mit Intellij funktioniert, müssen Sie die Datei project/plugins.sbt erstellen und fügen Sie in diese Zeile ein:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0") .
gen-idea ausführen in sbt, um ein intellij-Projekt zu generieren.

Mit giter8 erhalten Sie eine automatisch generierte Datei ProjectNameBuild.scala im Projektordner. Öffnen Sie diese und schließen Sie mindestens diese Bibliotheksabhängigkeiten ein:

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
  )

wobei Scala-Version die Variable private val scala_version = "2.10.3" ist

Erstellen Sie nun den benutzerdefinierten Quellcodegenerator, der so aussieht:

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)
    }
  }
}

Schließlich müssen Sie dieses execute aufrufen -Methode innerhalb des Hauptprojektobjekts. Suchen Sie die Datei ProjectName.scala, die von giter8 automatisch generiert wurde.
In ihr finden Sie einen println anrufen, da dies lediglich eine "Hallo Welt"-Anwendung ist. Oben println Rufen Sie so etwas auf:

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"
)

Auf diese Weise jedes Mal, wenn Sie sbt run ausführen Sie werden die von Slick benötigten Tabellenklassen automatisch generieren