Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment configurer le nom d'utilisateur et le mot de passe avec le générateur de code source de Slick ?

À partir de plusieurs liens trouvés sur Internet et également sur la base de la réponse du cvogt, c'est le minimum que vous devez faire.

Notez qu'il s'agit d'une solution générale pour sbt. Si vous avez affaire à un framework de jeu, vous trouverez peut-être plus facile d'effectuer cette tâche avec le plugin correspondant

Tout d'abord, vous avez besoin d'un nouveau projet sbt en raison de toutes les dépendances de la bibliothèque qui doivent être référencées pour que le générateur de source astucieux puisse fonctionner.
Créez le nouveau projet sbt à l'aide de ce didacticiel :http://scalatutorials.com/beginner/2013/07/18/getting-started -avec-sbt/
Utilisez de préférence la méthode Setup using giter8

Si cela fonctionne avec Intellij, vous devez créer le fichier project/plugins.sbt et insérez à l'intérieur de cette ligne :addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0") .
Exécuter gen-idea dans sbt pour générer un projet intellij.

Avec giter8, vous obtenez un fichier généré automatiquement ProjectNameBuild.scala dans le dossier du projet. Ouvrez ceci et incluez au moins ces dépendances de bibliothèque :

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
  )

où version scala est la variable private val scala_version = "2.10.3"

Créez maintenant le générateur de code source personnalisé qui ressemble à ceci :

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

Enfin, vous devez appeler ceci execute méthode à l'intérieur de l'objet principal du projet. Trouvez le fichier ProjectName.scala qui a été généré automatiquement par giter8.
À l'intérieur, vous trouverez un println call puisqu'il s'agit simplement d'une application "hello world". Au-dessus de println appelez quelque chose comme ça :

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

De cette façon, chaque fois que vous exécutez sbt run vous allez générer automatiquement les classes Table requises par Slick