java - tutorial - Pasos necesarios para usar la base de datos MySQL con Play Framework 2.0
play framework postgresql (10)
Juega 2.4.3 y MYSQL 5.7.9
Pude hacer que funcionara reuniendo fragmentos de información de todas las respuestas anteriores. Así que aquí hay otro, que con suerte está más actualizado o es más útil para quienes tienen un entorno similar.
Detalles del entorno: ( esto es lo que estoy usando )
- Play 2.4.3 viene con activador-1.3.7-minimal
- JDK8, ya deberías tener esto, ya que no creo que esta versión de juego funcione con JDK7
- MYSQL 5.7.9
appication.conf
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3306/testSchema?characterEncoding=UTF-8"
db.default.user=yourDBUserName
db.default.password=yourDBUserPass
Nota:
- TestSchema en el URL es su nombre de base de datos, si está utilizando algo como MYSQL workbench , verá esto en la sección SCHEMAS. Llamé a mi examen TestSchema. Otros pueden llamarlo algo así como "myDatabase"
- El puerto debe ser el puerto MYSQL. No es su puerto de aplicación. Puse
3306
en el ejemplo porque generalmente es el predeterminado para MYSQL.
build.sbt
Agregue esta línea a su archivo build.sbt. Esto debería ir después de la declaración de libraryDependencies ++= Seq()
.
libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"
Finalmente
- ejecuta este comando desde la raíz del proyecto ->
activator reload
- reinicia tu aplicación
Soy nuevo en Play framework. Estoy tratando de configurar la base de datos MySQL como fuente de datos para usar con Play Ebeans.
¿Podría alguien explicar por favor los pasos que se necesitan para configurar MySQL con el marco de Play 2.0 (como descargar controladores, agregar dependencia, etc.).
Como escribió Carsten, se puede obtener de la documentación, sin embargo, aquí hay un resumen:
asegúrese de tener la dependencia configurada en /project/Build.scala
val appDependencies = Seq(
// Add your project dependencies here,
"mysql" % "mysql-connector-java" % "5.1.18"
)
Agregue una configuración adecuada de la base de datos (reemplace la configuración H2 predeterminada) en /conf/application.conf
:
(no elimine la codificación de la URL):
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/your_db_name?characterEncoding=UTF-8"
db.default.user=your_login
db.default.password=your_pass
en el mismo archivo, encuentre y asegúrese de que esta línea NO esté comentada:
ebean.default="models.*"
Eso es todo, reinicie su aplicación (o ejecute en modo dev), luego creará un DDL y le pedirá que lo aplique.
Estoy usando Play 2.2.0 y solo tuve que agregar la siguiente línea a build.sbt en la carpeta raíz del proyecto.
"mysql" % "mysql-connector-java" % "5.1.27"
Y jugar descarga automáticamente el controlador. Parece que Build.scala ya no se necesita para esto. Los cambios en application.conf se deben aplicar como los comentaristas anteriores han mencionado.
La mayoría de los métodos de acceso a una base de datos mysql con los que me he encontrado no explican cómo establecer una conexión y recuperar datos desde dentro del Modelo. En mi aplicación, estoy usando tanto mongoDB como una base de datos mysql externa. Así que aquí está cómo lo hice (el lado mysql de) las cosas:
Para Play 2.3.3, en el archivo build.sbt agregue la línea específica de mysql en libraryDependencies:
libraryDependencies ++= Seq( "mysql" % "mysql-connector-java" % "5.1.27" )
En el archivo /conf/application.conf, agregue esto:
db.myotherdb.driver = com.mysql.jdbc.Driver db.myotherdb.url = "jdbc:mysql://xxx.xxx.xxx.xxx/NameOfOtherDB?characterEncoding=UTF-8" db.myotherdb.user = MyOtherDbUSername db.myotherdb.password = MyOtherDbPass
Puede reemplazar "myotherdb" por "predeterminado" en caso de que desee utilizar la base de datos predeterminada o con cualquier otro nombre que desee utilizar. Reemplace "xxx.xxx.xxx.xxx" con la dirección IP del servidor donde se encuentra su base de datos (en el caso de una base de datos externa) o localhost (o 127.0.0.1) para la base de datos local. Reemplace "NameOfOtherDB" con el nombre de la base de datos que desea utilizar, el "MyOtherDbUSername" con su nombre de usuario de base de datos y "MyOtherDbPass" con la contraseña de su base de datos.
Dentro de su Modelo (/app/models/MyModel.scala) agregue esto:
val connection = DB.getConnection("myotherdb")
Crea la declaración, la consulta y ejecútala:
val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY) val query = "SELECT * FROM myTableName" val resultset = statement.executeQuery(query)
Luego puede continuar con lo que quiera hacer con los datos recuperados. Por ejemplo:
while (resultset.next()) { resultset.getString("columnName") }
Donde "columnName" es el nombre de la columna / campo de la tabla DB que desea recuperar.
Por último, pero no menos importante, me gustaría señalar que es posible que desee cerrar la conexión llamando a close ()
Me quedé atrapado con mi configuración de MySQL hasta que encontré esto.
Las cosas más importantes tomadas de @biesior responden:
- Agregue el conector / J de MySQL en la dependencia del proyecto (que está dentro de
/project/Build.scala
) - Después de agregar la dependencia, ejecute las
play dependencies
para resolver el conector MySQL recién agregado / dependencia J - Descomentar la línea de configuración ebean predeterminada ebean.default
ebean.default="models.*"
- Configure la base de datos MySQL correctamente con la codificación de caracteres adecuada
db.default.driver=com.mysql.jdbc.Driver db.default.url="jdbc:mysql://www.sample.com:3306/test?characterEncoding=UTF-8" db.default.user=playuser db.default.pass=playuser
Me salvó el día.
Mira esta página desde la documentación de Play. Dice:
Aparte de la base de datos en memoria h2, útil principalmente en el modo de desarrollo, Play 2.0 no proporciona ningún controlador de base de datos. En consecuencia, para implementar en producción, deberá agregar su controlador de base de datos como una dependencia de la aplicación.
Por ejemplo, si usa MySQL5, necesita agregar una dependencia para el conector:
val appDependencies = Seq(
// Add your project dependencies here,
...
"mysql" % "mysql-connector-java" % "5.1.18"
...
)
SBT descargará el controlador por usted. También debe consultar la sección sobre administración de dependencias .
Para conectarse a MySQL, también deberá cambiar algunas configuraciones en su application.conf
:
db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"
Para jugar 2.3.1 , sigue estos pasos.
1) Agregue el conector / J de MySQL en la dependencia del proyecto (que está dentro de /project/build.sbt)
libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29"
2) Descomentar la línea de configuración ebean predeterminada ebean.default = "models. *"
3) Configure la base de datos MySQL correctamente con la codificación de caracteres adecuada
db.default.driver=com.mysql.jdbc.Driver //this is com. and not org.
db.default.url="jdbc:mysql://127.0.0.1/test?characterEncoding=UTF-8"
db.default.user=playuser
db.default.pass=playuser
4) La mayoría de Imp. Ejecute un comando de recarga en la consola.
Para jugar java project Usando SBT
Cambie la bibliotecaDependencia a llok como esta en "build.sbt"
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
javaWs,
"mysql" % "mysql-connector-java" % "5.1.27"
)
Ejecute su proyecto usando "activador run"
La reproducción disminuirá el conector jdbc requerido.
Tuve el mismo problema en el último Play Framework 2.4.x con el activador 1.3.6.
Aquí están los pasos. Seguí los pasos que se describen aquí https://www.playframework.com/documentation/2.4.x/JavaDatabase
Aquí está mi application.conf
# MySQL DB Configuration
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://{hostname or ipaddres}/{db name}?characterEncoding=UTF-8"
db.default.username=username // Note that user id deprecated, instead use username. Though that is not a major issue
db.default.password="password"
# JPA Configurations
jpa.default=defaultPersistenceUnit
PlayKeys.externalizeResources = false
# JavaEbean configuration
ebean.default = ["models.*"]
Aquí está build.sbt
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
javaJpa,
evolutions,
"mysql" % "mysql-connector-java" % "5.1.27"
)
plugins.sbt
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.3")
// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")
// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")
// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt using
// enablePlugins(SbtEbean). Note, uncommenting this line will automatically bring in
// Play enhancer, regardless of whether the line above is commented out or not.
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")
Aquí está el paso importante.
Después de configurar los pasos anteriores, vaya a la línea de comando, detenga su activador y ejecute el comando
activator run
. En mi situación, seguía recibiendo el errorunable to find mysql drivers
. Después de ejecutar la ejecución delactivator run
, el activador realmente descargaría los controladores MySQL y resolvería las dependencias. Ese es el paso importante que resolvió mi problema.
For me this work ,Add this below line into your Dependencies
**"mysql" % "mysql-connector-java" % "5.1.36"**
So , here is the code
import java.sql.Connection
val driver = "com.mysql.jdbc.Driver"
val url = "jdbc:mysql://localhost/world"
val username = "root"
val password = "root"
var connection: Connection = null
try { // make the connection
Class.forName(driver)
connection = DriverManager.getConnection(url, username, password)
// create the statement, and run the select query
val statement = connection.createStatement()
val resultSet = statement.executeQuery("SELECT id , name FROM bar")
val sql: SqlQuery = SQL("select * from products order by name asc")
while (resultSet.next()) {
val id = resultSet.getString("id")
val name = resultSet.getString("name")
println(id, name)
}
} catch {
case e: Exception => println("exception caught: " + e);
}
connection.close()