Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como configurar o nome de usuário e a senha com o gerador de código-fonte do Slick?


De vários links encontrados na internet e também com base na resposta do cvogt este é o mínimo que você precisa fazer.

Observe que esta é uma solução geral para sbt. Se você está lidando com a estrutura do jogo, pode achar mais fácil executar esta tarefa com o plug-in relevante

Antes de tudo, você precisa de um novo projeto sbt por causa de todas as dependências de biblioteca que precisam ser referenciadas para que o gerador de código-fonte slick seja executado.
Crie o novo projeto sbt usando este tutorial:http://scalatutorials.com/beginner/2013/07/18/getting-started -com-sbt/
Use preferencialmente o método Configuração usando giter8

Se acontecer de funcionar com o Intellij, você precisará criar o arquivo project/plugins.sbt e insira dentro desta linha:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0") .
Executar gen-idea em sbt para gerar um projeto intellij.

Com giter8 você obtém um arquivo gerado automaticamente ProjectNameBuild.scala dentro da pasta do projeto. Abra isso e inclua pelo menos estas dependências 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
  )

onde scala version é a variável private val scala_version = "2.10.3"

Agora crie o gerador de código-fonte personalizado que se parece com isso:
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, você precisa chamar isso de execute método dentro do objeto do projeto principal. Encontre o arquivo ProjectName.scala que foi gerado automaticamente pelo giter8.
Dentro dele você encontrará um println call, pois este é apenas um aplicativo "hello world". Acima de println chame algo assim:
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"
)

Dessa forma, toda vez que você executar sbt run você irá gerar automaticamente as classes de Tabela exigidas pelo Slick