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

Java 在Play framework 2.0中使用MySQL数据库所需的步骤,java,playframework,playframework-2.0,ebean,Java,Playframework,Playframework 2.0,Ebean,我是新手。我正在尝试将MySQL数据库配置为一个数据源,用于Play Ebeans 你能解释一下用Play 2.0框架配置MySQL所需的步骤吗(如下载驱动程序、添加依赖项等)。请看Play的文档。它说: 除了h2内存数据库(主要用于开发模式)之外,Play 2.0不提供任何数据库驱动程序。因此,要在生产环境中部署,您必须将数据库驱动程序添加为应用程序依赖项 例如,如果使用MySQL5,则需要为连接器添加依赖项: SBT将为您下载驱动程序。你也应该看看这本书 要连接到MySQL,您还需要更改应用

我是新手。我正在尝试将MySQL数据库配置为一个数据源,用于Play Ebeans

你能解释一下用Play 2.0框架配置MySQL所需的步骤吗(如下载驱动程序、添加依赖项等)。

请看Play的文档。它说:

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

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

SBT将为您下载驱动程序。你也应该看看这本书

要连接到MySQL,您还需要更改
应用程序.conf中的一些设置:

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

正如Carsten所写,可以从文档中获取,但这里有一个摘要:

确保在
/project/Build.scala

val appDependencies = Seq(
    // Add your project dependencies here,
    "mysql" % "mysql-connector-java" % "5.1.18"
)
/conf/application.conf
中添加数据库的正确配置(替换默认H2配置):

(不从URL中删除编码):

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

ebean.default="models.*"

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

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

从@biesior答案中获得的最重要的东西:

  • 在项目的依赖项中添加MySQL连接器/J(在
    /project/Build.scala
    中)
  • 添加依赖项后,运行
    playdependencies
    以解析新添加的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

它节省了我的时间。

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

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

并自动下载播放驱动程序。看起来Build.scala不再需要了。对application.conf的更改应如上述评论员所述应用。

对于播放2.3.1,请遵循以下步骤

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

2) 取消注释默认ebean配置行ebean.default=“models.*”

3) 使用正确的字符编码正确配置MySQL数据库

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) 大多数Imp.在控制台中运行重新加载命令

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

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

    libraryDependencies ++= Seq(
        "mysql" % "mysql-connector-java" % "5.1.27"
    )
    
    "mysql" % "mysql-connector-java" % "5.1.36"
    
  • 在/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
    
    val connection = DB.getConnection("myotherdb")
    
    如果要使用默认数据库或任何其他要使用的名称,可以将“myotherdb”替换为“default”。将“xxx.xxx.xxx.xxx”替换为数据库所在服务器的IP地址(如果是外部数据库)或本地数据库的本地主机(或127.0.0.1)。将“NameOfTherDB”替换为要使用的数据库名称,“MyOtherDbUSername”替换为数据库用户名,“MyOtherDbPass”替换为数据库密码

  • 在模型(/app/models/MyModel.scala)中添加以下内容:

    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
    
    val connection = DB.getConnection("myotherdb")
    
  • 创建语句、查询并执行它:

    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”是要检索的DB表列/字段的名称


  • 最后但并非最不重要的一点是,我想指出,您可能希望通过调用close()来关闭连接,以便使用SBT播放java项目

    将libraryDependency更改为llok,如“build.sbt”中所示

    使用“activator Run”运行项目


    播放将减少所需的jdbc连接器。

    我在最新的播放框架2.4.x和activator 1.3.6中遇到了相同的问题

    以下是步骤。 我遵循了这里描述的步骤

    这是我的
    application.conf

    #MySQL数据库配置
    db.default.driver=com.mysql.jdbc.driver
    db.default.url=“jdbc:mysql://{hostname或ipaddress}/{db name}?characterEncoding=UTF-8”
    db.default.username=username//请注意,不推荐使用用户id,请改用username。虽然这不是一个大问题
    db.default.password=“password”
    #JPA配置
    jpa.default=defaultPersistenceUnit
    PlayKeys.externalizeResources=false
    #JavaEbean配置
    ebean.default=[“models.*”]
    播放2.4.3和MYSQL 5.7.9 我把以前所有答案中的一些信息拼凑在一起,就可以做到这一点。这是另一个,希望对那些有着相似环境的人来说更为及时或有用

    环境详细信息:(这就是我正在使用的)

    • 重头戏2.4.3该游戏配有activator-1.3.7-minimal
    • JDK8,您应该已经有了它,因为我认为这个版本的play不适合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是您的数据库名称,如果您使用类似的名称,您将在SCHEMAS部分中看到这一点。我叫我的testSchema。其他人可能会称之为“myDatabase”
    • 端口应该是MYSQL端口。不是您的应用程序端口。我将
      3306
      放在示例中,因为这是
      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
      
      libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"
      
      "mysql" % "mysql-connector-java" % "5.1.36"