在Play framework 2.0中使用MySQL数据库所需的步骤

Vee*_*era 91 java playframework ebean playframework-2.0

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

请问您能解释一下使用Play 2.0框架配置MySQL所需的步骤(例如,下载驱动程序,添加依赖项等).

Car*_*ten 101

从Play的文档中查看此页面.它说:

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

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

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

SBT将为您下载驱动程序.您还应该查看有关管理依赖项的部分.

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

db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"
Run Code Online (Sandbox Code Playgroud)

  • 现在,它应该被添加到项目根级别的build.sbt中,例如:libraryDependencies ++ = Seq(javaJdbc,javaEbean,"mysql"%"mysql-connector-java"%"5.1.28",缓存) (9认同)
  • 在这里玩框架2.1.1.更新build.sbt后,您应该在播放终端中输入命令'update' (3认同)

bie*_*ior 94

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

确保配置了依赖项 /project/Build.scala

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

在以下位置添加DB的正确配置(替换默认的H2配置)/conf/application.conf:

(不要从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
Run Code Online (Sandbox Code Playgroud)

在同一个文件中查找并确保此行未注释:

ebean.default="models.*"
Run Code Online (Sandbox Code Playgroud)

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


jro*_*ook 10

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

  "mysql" % "mysql-connector-java" % "5.1.27"
Run Code Online (Sandbox Code Playgroud)

并且播放自动下载驱动程序.似乎不再需要Build.scala了.应该像上面的评论员提到的那样对application.conf进行更改.

  • 谢谢!!!对于需要像我这样详细说明的人,你基本上去build.sbt并将该行添加到`libraryDependencies ++ = Seq(jdbc,anorm,cache,'mysql"%"mysql-connector-java"%"5.1.27 ")` (3认同)

con*_*ela 8

访问我遇到的mysql数据库的大多数方法都没有解释如何建立连接并从模型中检索数据.在我的应用程序中,我使用mongoDB和外部mysql数据库.所以这就是我做的事情(mysql方面):

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

    libraryDependencies ++= Seq(
        "mysql" % "mysql-connector-java" % "5.1.27"
    )
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

    如果要使用默认数据库或要使用的任何其他名称,可以将"myotherdb"替换为"default".将"xxx.xxx.xxx.xxx"替换为数据库所在服务器的IP地址(对于外部数据库)或本地数据库的localhost(或127.0.0.1).将"NameOfOtherDB"替换为您要使用的数据库的名称,将"MyOtherDbUSername"替换为您的数据库用户名,将"MyOtherDbPass"替换为您的数据库密码.

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

    val connection = DB.getConnection("myotherdb")
    
    Run Code Online (Sandbox Code Playgroud)
  4. 创建语句,查询并执行它:

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

    while (resultset.next()) {
        resultset.getString("columnName")
    }
    
    Run Code Online (Sandbox Code Playgroud)

    其中"columnName"是要检索的数据库表列/字段的名称.

最后但并非最不重要的,我想说明您可能希望通过调用close()来关闭连接


小智 6

在我找到这个之前,我一直坚持使用我的MySQL配置.

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

  • 在项目的依赖项中添加MySQL连接器/ J(在里面/project/Build.scala)
  • 添加依赖项后,运行play dependencies以解决新添加的MySQL连接器/ J依赖项
  • 取消注释默认的ebean配置行 ebean.default="models.*"
  • 使用正确的字符编码正确配置MySQL数据库 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

它救了我的一天.


Kri*_*eck 5

玩 2.4.3 & MYSQL 5.7.9

通过将以前所有答案中的一些信息拼凑起来,我能够使这项工作发挥作用。所以这是另一个,希望对那些具有类似环境的人来说是最新的或有用的。

环境信息:这是我使用

  • 玩 2.4.3 这个自带的activator-1.3.7-minimal
  • JDK8,你应该已经有了这个,因为我认为这个版本的 play 不适用于 JDK7
  • MYSQL 5.7.9

应用配置文件

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
Run Code Online (Sandbox Code Playgroud)

笔记:

  • URL 中的 testSchema 是您的数据库名称,如果您使用的是MYSQL Workbench 之类的东西,您将看到它列在 SCHEMAS 部分下。我打电话给我的 testSchema。其他人可能会称它为“myDatabase”
  • 端口应该是 MYSQL 端口。不是您的应用程序端口。我放入3306示例中是因为这通常是 MYSQL 的默认设置。

生成.sbt

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

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"
Run Code Online (Sandbox Code Playgroud)

最后

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