sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo configurar el nombre de usuario y la contraseña con el generador de código fuente de Slick?

De varios enlaces que se encuentran en Internet y también según la respuesta de cvogt, esto es lo mínimo que debe hacer.

Tenga en cuenta que esta es una solución general para sbt. Si se trata de Play Framework, puede que le resulte más fácil realizar esta tarea con el complemento correspondiente

En primer lugar, necesita un nuevo proyecto sbt debido a todas las dependencias de la biblioteca a las que se debe hacer referencia para que se ejecute el generador de código fuente.
Cree el nuevo proyecto sbt usando este tutorial:http://scalatutorials.com/beginner/2013/07/18/Getting-Started -con-sbt/
Preferiblemente use el método Configuración usando giter8

Si funciona con Intellij, debe crear el archivo project/plugins.sbt e inserte dentro de esta línea:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0") .
Ejecutar gen-idea en sbt para generar un proyecto intellij.

Con giter8 obtienes un archivo ProjectNameBuild.scala generado automáticamente dentro de la carpeta del proyecto. Abra esto e incluya al menos estas dependencias de biblioteca:

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
  )

donde versión de scala es la variable private val scala_version = "2.10.3"

Ahora cree el generador de código fuente personalizado que se ve así:

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

Finalmente necesitas llamar a esto execute método dentro del objeto principal del proyecto. Busque el archivo ProjectName.scala que giter8 generó automáticamente.
Dentro de él encontrará un println llamar ya que esta es simplemente una aplicación de "hola mundo". Por encima de println llamar algo así:

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 esta forma cada vez que ejecutes sbt run va a generar las clases de tabla requeridas por Slick automáticamente