Mysql
 sql >> Database >  >> RDS >> Mysql

Come impostare nome utente e password con il generatore di codice sorgente di Slick?

Da diversi link trovati in internet e anche in base alla risposta del cvogt questo è il minimo che devi fare.

Nota che questa è una soluzione generale per sbt. Se hai a che fare con il framework di gioco, potresti trovare più facile eseguire questa attività con il relativo plug-in

Prima di tutto è necessario un nuovo progetto sbt a causa di tutte le dipendenze della libreria a cui è necessario fare riferimento per eseguire il generatore di sorgenti slick.
Crea il nuovo progetto sbt usando questo tutorial:http://scalatutorials.com/beginner/2013/07/18/getting-started -con-sbt/
Utilizzare preferibilmente il metodo Installazione tramite giter8

Se funziona con Intellij, devi creare il file project/plugins.sbt e inserisci all'interno di questa riga:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0") .
Esegui gen-idea in sbt per generare un progetto intellij.

Con giter8 ottieni un file generato automaticamente ProjectNameBuild.scala all'interno della cartella del progetto. Aprilo e includi almeno queste dipendenze della libreria:

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
  )

dove scala version è la variabile private val scala_version = "2.10.3"

Ora crea il generatore di codice sorgente personalizzato che assomiglia a questo:

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

Infine devi chiamare questo execute metodo all'interno dell'oggetto principale del progetto. Trova il file ProjectName.scala che è stato generato automaticamente da giter8.
Al suo interno troverai un println chiamata poiché questa è semplicemente un'applicazione "ciao mondo". Sopra println chiama qualcosa del genere:

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

In questo modo ogni volta che esegui sbt run genererai automaticamente le classi Table richieste da Slick