连接到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
按需注入
其他可以帮助您的东西:
我正在做一个项目,我将 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
按需注入其他可以帮助您的东西: