我如何在播放框架中使用默认数据库以外的其他数据库?

How do I use another database other than default in play-framework?

直到我在我的应用程序中只使用一个数据库。所以对于任何 sql 查询,我只是使用默认数据库。下面给出了有关数据库的信息。

db.default.driver=org.postgresql.Driver
db.default.url="postgres://user:password@localhost:5439/database_name"

这些信息保存在 appliction.conf 文件中。在下面的代码中,DB 是默认数据库。

DB.withConnection {
  conn =>
    {
      val statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
      try {
        statement.execute(sql)
      }
      catch {
        case e: Exception => Logger.debug("There is some error with the database")
      }
    }
}

但我需要使用另一个数据库。下面给出了有关数据库的信息。

db.um.driver=com.mysql.jdbc.Driver
db.um.url="mysql://user:password@localhost:3306/database_name"

这些信息也保存在 application.conf 文件中。现在如何访问该数据库和 运行 sql 命令。

名为default的数据源,顾名思义,用作所有连接的默认值。您可以看到 withConnection() 方法采用带有数据源名称的参数,但如果未传递任何内容,则使用 "default" 代替。

要使用附加数据源,您必须将其指定为 withConnection() 方法的参数。

DB.withConnection("um") { conn =>
  // implement your action
}

如果有人像我一样,希望在 Play 2.6 中使用多个数据资源:这不是答案。

我们在注入Database的实例时需要定义数据库的名称,使用@NamedDatabase

class Customer @Inject()(@NamedDatabase("customer") db: Database){ ??? }