Je suis nouveau dans le framework Play. J'essaie de configurer la base de données MySQL en tant que source de données à utiliser avec Play Ebeans.
Pourriez-vous, s'il vous plaît, expliquer les étapes nécessaires à la configuration de MySQL avec l'infrastructure Play 2.0 (téléchargement de pilotes, ajout de dépendances, etc.).
Regardez cette page dans la documentation de Play. Ça dit:
À l'exception de la base de données h2 en mémoire, particulièrement utile en mode développement, Play 2.0 ne fournit aucun pilote de base de données. Par conséquent, pour déployer en production, vous devrez ajouter votre pilote de base de données en tant que dépendance d'application.
Par exemple, si vous utilisez MySQL5, vous devez ajouter une dépendance pour le connecteur:
val appDependencies = Seq(
// Add your project dependencies here,
...
"mysql" % "mysql-connector-Java" % "5.1.18"
...
)
SBT téléchargera le pilote pour vous. Vous devriez également consulter le section sur la gestion des dépendances .
Pour vous connecter à MySQL, vous devrez également modifier certains paramètres de votre application.conf
:
db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"
Comme Carsten l'a écrit, il peut être récupéré à partir de la documentation, mais voici un résumé:
assurez-vous que la dépendance est configurée dans /project/Build.scala
val appDependencies = Seq(
// Add your project dependencies here,
"mysql" % "mysql-connector-Java" % "5.1.18"
)
Ajoutez une configuration appropriée de la base de données (remplacez la configuration H2 par défaut) dans /conf/application.conf
:
(ne supprimez pas le codage de l'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
dans le même fichier, recherchez et assurez-vous que cette ligne n'est PAS commentée:
ebean.default="models.*"
C'est tout, redémarrez votre application (ou exécutez-le en mode dev), puis il créera un DDL et vous demandera de l'appliquer.
J'utilise play 2.2.0 et je viens juste d'ajouter la ligne suivante à build.sbt dans le dossier racine du projet.
"mysql" % "mysql-connector-Java" % "5.1.27"
Et jouer télécharge automatiquement le pilote. Il semble que Build.scala n’est plus nécessaire pour cela. Les modifications apportées à application.conf doivent être appliquées comme indiqué par les commentateurs ci-dessus.
La plupart des méthodes d'accès à une base de données mysql que j'ai rencontrées n'expliquent pas comment établir une connexion et récupérer des données à partir du modèle. Dans mon application, j'utilise à la fois mongoDB et une base de données mysql externe. Alors voici comment j'ai fait (le côté mysql) de choses:
Pour Play 2.3.3, dans le fichier build.sbt, ajoutez la ligne spécifique à mysql dans libraryDependencies:
libraryDependencies ++= Seq(
"mysql" % "mysql-connector-Java" % "5.1.27"
)
Dans le fichier /conf/application.conf, ajoutez ceci:
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
Vous pouvez remplacer "myotherdb" par "default" si vous souhaitez utiliser la base de données par défaut ou tout autre nom que vous souhaitez utiliser. Remplacez "xxx.xxx.xxx.xxx" par l'adresse IP du serveur sur lequel se trouve votre base de données (dans le cas d'une base de données externe) ou localhost (ou 127.0.0.1) pour la base de données locale. Remplacez "NameOfOtherDB" par le nom de la base de données que vous souhaitez utiliser, "MyOtherDbUSername" par votre nom d'utilisateur et "MyOtherDbPass" par votre mot de passe.
Dans votre modèle (/app/models/MyModel.scala), ajoutez ceci:
val connection = DB.getConnection("myotherdb")
Créez la déclaration, la requête et exécutez-la:
val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
val query = "SELECT * FROM myTableName"
val resultset = statement.executeQuery(query)
Ensuite, vous pouvez continuer avec ce que vous voulez faire avec les données récupérées. Par exemple:
while (resultset.next()) {
resultset.getString("columnName")
}
Où "columnName" est le nom de la colonne/du champ de la table de la base de données que vous souhaitez récupérer.
Dernier point mais non le moindre, je voudrais noter que vous voudrez peut-être fermer la connexion en appelant close ()
Je suis resté coincé avec ma configuration MySQL jusqu'à ce que je trouve cela.
Les choses les plus importantes tirées de @biesior répondent:
/project/Build.scala
)play dependencies
pour résoudre les dépendances MySQL/J récemment ajoutéesebean.default="models.*"
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
Cela m'a sauvé la journée.
J'ai pu obtenir ce travail en rassemblant des morceaux d'informations de toutes les réponses précédentes. En voici donc un autre, qui, espérons-le, est plus à jour ou utile pour ceux qui évoluent dans un environnement similaire.
Détails de l'environnement: ( c'est ce que j'utilise)
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
Remarque:
3306
Dans l'exemple car c'est généralement la valeur par défaut pour MYSQL.build.sbt
Ajoutez cette ligne ci-dessous à votre fichier build.sbt. Cela devrait aller après la déclaration libraryDependencies ++= Seq()
.
libraryDependencies += "mysql" % "mysql-connector-Java" % "5.1.36"
Enfin
activator reload
Pour jouer 2.3.1, procédez comme suit.
1) Ajouter le connecteur MySQL/J dans la dépendance du projet (qui se trouve dans /project/build.sbt)
libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-Java" % "5.1.29"
2) Ne commentez pas la ligne de configuration ebean par défaut ebean.default = "models. *"
3) Configurer correctement la base de données MySQL avec le codage de caractères approprié
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 plupart des Imp. Exécutez une commande reload dans la console.
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()
J'ai eu le même problème dans le dernier framework de jeu 2.4.x avec l'activateur 1.3.6.
Voici les étapes. J'ai suivi les étapes décrites ici https://www.playframework.com/documentation/2.4.x/JavaDatabase
Voici mon 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.*"]
Voici 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")
Voici l'étape importante.
Après avoir configuré les étapes ci-dessus, accédez à la ligne de commande, arrêtez votre activateur et exécutez la commande
activator run
. Dans ma situation, je continuais à avoir l'erreurunable to find mysql drivers
. Après avoir exécuté leactivator run
, activateur téléchargerait les pilotes MySQL et résoudrait les dépendances. C’est l’étape importante qui a résolu mon problème.
Pour jouer Java projet utilisant SBT
Changez la dépendance de la bibliothèque pour qu'elle ressemble à ceci dans "build.sbt"
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
javaWs,
"mysql" % "mysql-connector-Java" % "5.1.27"
)
Exécutez votre projet en utilisant "activator run"
Jouez avec le connecteur JDBC requis.