sql >> Databasteknik >  >> RDS >> Mysql

Hur ställer man in användarnamn och lösenord med Slicks källkodsgenerator?

Från flera länkar som finns på internet och även baserat på cvogts svar är detta det minsta du behöver göra.

Observera att detta är en allmän lösning för sbt. Om du har att göra med spelramverk kanske du tycker det är lättare att utföra denna uppgift med relevant plugin

Först och främst behöver du ett nytt sbt-projekt på grund av alla biblioteksberoenden som måste refereras till för att slick source generator ska kunna köras.
Skapa det nya sbt-projektet med den här handledningen:http://scalatutorials.com/beginner/2013/07/18/getting-started -med-sbt/
Använd helst metoden Setup using giter8

Om det råkar fungera med Intellij måste du skapa filen project/plugins.sbt och infoga på denna rad:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0") .
Kör gen-idea i sbt för att generera ett intellij-projekt.

Med giter8 får du en autogenererad fil ProjectNameBuild.scala inuti projektmappen. Öppna detta och inkludera åtminstone dessa biblioteksberoenden:

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
  )

där scala version är variabeln private val scala_version = "2.10.3"

Skapa nu den anpassade källkodsgeneratorn som ser ut så här:

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

Slutligen måste du kalla detta execute metod inuti huvudprojektobjektet. Hitta filen ProjectName.scala som genererades automatiskt av giter8.
Inuti den hittar du en println samtal eftersom detta bara är en "hej världen"-applikation. Ovanför println kalla något sånt:

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

Så här varje gång du kör sbt run du kommer att generera de tabellklasser som krävs av Slick automatiskt



  1. SQL-injektion fungerar inte korrekt

  2. mySQL ::infoga i tabell, data från en annan tabell?

  3. jdbc till MYSQL-fel:Ingen lämplig drivrutin hittades för jdbc:mysql://localhost:3306/test?user='root'&password=''

  4. Kopiera en MySQL-tabell inklusive index