【问题标题】:Connecting to multiple db in scala在scala中连接到多个数据库
【发布时间】:2019-07-27 14:59:02
【问题描述】:

我正在做一个项目,我将 Hikari、Liquibase、Slick 用于 db 相关目的。

现在我想将表分成多个数据库。我到底是怎么做的,比如如果我想查询一些东西,要确切知道我应该查询哪个数据库,当然还要能够连接到那些数据库

【问题讨论】:

标签: scala slick liquibase


【解决方案1】:

如果你使用 play-slick 很简单......在示例中它解释了如何:https://github.com/playframework/play-slick/tree/master/samples/basic

首先您必须声明多个配置: https://github.com/playframework/play-slick/blob/master/samples/basic/conf/application.conf

# Database configuration
# ~~~~~ 
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
#
slick.dbs.default.profile="slick.jdbc.H2Profile$"
slick.dbs.default.db.driver="org.h2.Driver"
slick.dbs.default.db.url="jdbc:h2:mem:play"
slick.dbs.default.db.user=sa
slick.dbs.default.db.password=""

slick.dbs.mydb.profile="slick.jdbc.H2Profile$"
slick.dbs.mydb.db.driver="org.h2.Driver"
slick.dbs.mydb.db.url="jdbc:h2:mem:play"
slick.dbs.mydb.db.user=sa
slick.dbs.mydb.db.password=""

然后在将其注入 DAO 时使用它:

默认 -> https://github.com/playframework/play-slick/blob/master/samples/basic/app/dao/CatDAO.scala

class CatDAO @Inject() (protected val dbConfigProvider: DatabaseConfigProvider)(implicit executionContext: ExecutionContext) extends HasDatabaseConfigProvider[JdbcProfile] {
  import profile.api._

  //...
}

mydb -> https://github.com/playframework/play-slick/blob/master/samples/basic/app/dao/DogDAO.scala

class DogDAO @Inject() (@NamedDatabase("mydb") protected val dbConfigProvider: DatabaseConfigProvider)(implicit executionContext: ExecutionContext) extends HasDatabaseConfigProvider[JdbcProfile] {
              import profile.api._

              //...
 }

如果你不使用play-slick,你可以查看官方文档...这是一个如何在MYSCHEMA表中声明它的示例: http://slick.lightbend.com/doc/3.3.1/schemas.html

class Coffees(tag: Tag)
  extends Table[(String, Int, Double, Int, Int)](tag, Some("MYSCHEMA"), "COFFEES") {
  //...
}

在我们的例子中,我们没有连接到具有相同模型的多个数据库的示例... 为此,我们在开始时将其注入到初始化中,并通过选定的 APIKEY 按需注入它

其他可以帮助你的东西:

Assign dynamically injected database name in Play Slick

http://gbmetzner.github.io/Multiple-DB/

【讨论】:

  • 我没有使用 Play 框架。只是 Akka Http。但是你有我的努力:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
相关资源
最近更新 更多