使用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.scala
configuration的依赖/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的一面)的东西:
-
对于Play 2.3.3,在build.sbt文件中添加mysql的具体行,在libraryDependencies中:
libraryDependencies ++= Seq( "mysql" % "mysql-connector-java" % "5.1.27" )
-
在/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为您的数据库密码。
-
在您的模型(/app/models/MyModel.scala)中添加这个:
val connection = DB.getConnection("myotherdb")
-
创build语句,查询并执行它:
val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY) val query = "SELECT * FROM myTableName" val resultset = statement.executeQuery(query)
-
然后,您可以继续使用检索的数据执行任何操作。 例如:
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()