连接到scala中的多个数据库

Connecting to multiple db in scala

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

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

如果你使用 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 (s) 时使用它:

默认 -> 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 table: 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

按需注入

其他可以帮助您的东西:

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