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

Hvordan opsætter man brugernavn og adgangskode med Slicks kildekodegenerator?

Fra flere links fundet på internettet og også baseret på cvogts svar er dette det minimum, du skal gøre.

Bemærk, at dette er en generel løsning for sbt. Hvis du har at gøre med play framework, vil du måske finde det nemmere at udføre denne opgave med det relevante plugin

Først og fremmest har du brug for et nyt sbt-projekt på grund af alle de biblioteksafhængigheder, der skal refereres til, for at slick source-generatoren kan køre.
Opret det nye sbt-projekt ved hjælp af denne tutorial:http://scalatutorials.com/beginner/2013/07/18/getting-started -med-sbt/
Brug helst metoden Opsætning ved hjælp af giter8

Hvis det tilfældigvis virker med Intellij, skal du oprette filen project/plugins.sbt og indsæt i denne linje:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0") .
Kør gen-idea i sbt for at generere et intellij-projekt.

Med giter8 får du en autogenereret fil ProjectNameBuild.scala inde i projektmappen. Åbn dette og inkluder mindst disse biblioteksafhængigheder:

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
  )

hvor scala version er variablen private val scala_version = "2.10.3"

Opret nu den brugerdefinerede kildekodegenerator, der ser sådan ud:

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

Til sidst skal du kalde dette execute metode inde i hovedprojektobjekt. Find filen ProjectName.scala, der blev automatisk genereret af giter8.
Inde i den finder du en println opkald, da dette blot er en "hej verden"-applikation. Over println kald sådan noget:

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

På denne måde hver gang du udfører sbt run du kommer til at generere de tabelklasser, der kræves af Slick automatisk



  1. Migrering fra Postgres til SQL Server 2008

  2. Sådan finder du matchende tidsintervaller for mere end 2 brugere

  3. lagring af JSON-data i mysql

  4. Sådan får du optegnelser over den aktuelle måned i MySQL