使用Play框架2.0使用MySQL数据库所需的步骤

我是Play框架的新手。 我正在尝试将MySQL数据库configuration为与Play Ebeans一起使用的数据源。

你可否介绍一下使用Play 2.0框架configurationMySQL所需的步骤(如下载驱动程序,添加依赖等)。

从Play的文档看这个页面 。 它说:

除了主要用于开发模式的h2内存数据库之外,Play 2.0不提供任何数据库驱动程序。 因此,要在生产环境中进行部署,必须将数据库驱动程序添加为应用程序依赖项。

例如,如果您使用MySQL5,则需要为连接器添加依赖关系:

val appDependencies = Seq( // Add your project dependencies here, ... "mysql" % "mysql-connector-java" % "5.1.18" ... ) 

SBT将为您下载驱动程序。 您还应该查看关于pipe理依赖关系的部分 。

要连接到MySQL,您还需要更改application.conf一些设置:

 db.default.driver=com.mysql.jdbc.Driver db.default.url="mysql://root:secret@localhost/myDatabase" 

正如Carsten写的,它可以从文档中获取,但是这里有一个总结:

确保你拥有在/project/Build.scalaconfiguration的依赖/project/Build.scala

 val appDependencies = Seq( // Add your project dependencies here, "mysql" % "mysql-connector-java" % "5.1.18" ) 

/conf/application.conf添加一个适当的DBconfiguration(replace默认的H2configuration):

(不要从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 

在同一个文件中find并确保这一行不被评论:

 ebean.default="models.*" 

就是这样,重新启动你的应用程序(或以开发模式运行),然后它将创build一个DDL并要求你应用它。

我正在使用播放2.2.0,我只需要添加以下行到项目的根文件夹中的build.sbt。

  "mysql" % "mysql-connector-java" % "5.1.27" 

并播放自动下载驱动程序。 看来Build.scala不再需要这个了。 应该像上面的评论员提到的那样应用application.conf的变化。

访问我所遇到的mysql数据库的大多数方法都没有解释如何build立连接并从模型中检索数据。 在我的应用程序中,我正在使用mongoDB和外部mysql数据库。 所以这里是我做的(MySQL的一面)的东西:

  1. 对于Play 2.3.3,在build.sbt文件中添加mysql的具体行,在libraryDependencies中:

     libraryDependencies ++= Seq( "mysql" % "mysql-connector-java" % "5.1.27" ) 
  2. 在/conf/application.conf文件中添加这个:

     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 

    如果您想使用默认数据库或使用其他任何名称,则可以将“myotherdb”replace为“default”。 将“xxx.xxx.xxx.xxx”replace为数据库所在服务器的IP地址(如果是外部数据库)或本地数据库的本地主机(或127.0.0.1)。 将“NameOfOtherDB”replace为要使用的数据库的名称,将“MyOtherDbUSername”replace为您的数据库用户名,将“MyOtherDbPass”replace为您的数据库密码。

  3. 在您的模型(/app/models/MyModel.scala)中添加这个:

     val connection = DB.getConnection("myotherdb") 
  4. 创build语句,查询并执行它:

     val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY) val query = "SELECT * FROM myTableName" val resultset = statement.executeQuery(query) 
  5. 然后,您可以继续使用检索的数据执行任何操作。 例如:

     while (resultset.next()) { resultset.getString("columnName") } 

    其中“columnName”是您要检索的数据库表列/字段的名称。

最后但并非最不重要的一点是,我想指出,你可能想通过调用close()来closures连接。

在我发现这个之前一直坚持使用我的MySQLconfiguration。

最重要的事情来自@ biesior答案:

  • 在项目的依赖关系中添加MySQL连接器/ J(位于/project/Build.scala
  • 添加依赖项后,运行play dependencies来parsing新添加的MySQL连接器/ J依赖项
  • 取消注释默认的ebeanconfiguration行ebean.default="models.*"
  • 使用正确的字符编码正确configurationMySQL数据库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

它拯救了我的一天。

对于播放2.3.1 ,请按照以下步骤操作。

1)添加MySQL连接器/ J在项目的依赖项(这是在/project/build.sbt内)

 libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29" 

2)取消注释默认的ebeanconfiguration行ebean.default =“models。*”

3)正确configurationMySQL数据库,使用正确的字符编码

 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)最具影响力 在控制台中运行重新加载命令。

玩2.4.3和MYSQL 5.7.9

我能够通过将以前所有答案中的信息拼凑在一起来得到这个工作。 所以这里是另外一个,希望对于那些有着类似环境的人来说更有用。

环境细节:( 这是我正在使用

  • 玩2.4.3这与激活-1.3.7-最小
  • JDK8,你应该已经有了这个,因为我不认为这个版本的游戏可以和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 

注意:

  • 在URL中的testSchema是你的数据库名称,如果你正在使用像MYSQL工作台的东西,你会看到这个列在SCHEMAS部分。 我叫我的testSchema。 其他人可能称之为“myDatabase”
  • 该端口应该是MYSQL端口。 不是你的应用程序端口 我在示例中放置了3306 ,因为这通常是MYSQL的默认值。

build.sbt

将以下这行添加到您的build.sbt文件中。 这应该去之后的libraryDependencies ++= Seq()声明。

 libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36" 

最后

  • 从项目的根目录 – > activator reload运行这个命令
  • 重新启动您的应用程序

用于播放Java项目使用SBT

在“build.sbt”中将libraryDependency更改为llok

 libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, javaWs, "mysql" % "mysql-connector-java" % "5.1.27" ) 

使用“激活器运行”运行您的项目

播放将需要jdbc连接器。

最新的玩家框架2.4.x与激活1.3.6我有同样的问题。

这是步骤。 我遵循这里描述的步骤https://www.playframework.com/documentation/2.4.x/JavaDatabase

这是我的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.*"] 
 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() 
Interesting Posts