【发布时间】:2019-07-27 14:59:02
【问题描述】:
我正在做一个项目,我将 Hikari、Liquibase、Slick 用于 db 相关目的。
现在我想将表分成多个数据库。我到底是怎么做的,比如如果我想查询一些东西,要确切知道我应该查询哪个数据库,当然还要能够连接到那些数据库
【问题讨论】:
-
也许,这个答案可以帮助stackoverflow.com/questions/25364023/…
我正在做一个项目,我将 Hikari、Liquibase、Slick 用于 db 相关目的。
现在我想将表分成多个数据库。我到底是怎么做的,比如如果我想查询一些东西,要确切知道我应该查询哪个数据库,当然还要能够连接到那些数据库
【问题讨论】:
如果你使用 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 按需注入它
其他可以帮助你的东西:
【讨论】: