1.需要的sbt依赖
"org.scalatestplus.play" %% "scalatestplus-play" % "3.0.0" % Test,
"mysql" % "mysql-connector-java" % "5.1.47",
"com.typesafe.play" %% "play-slick" % "3.0.0",
"com.typesafe.play" %% "play-slick-evolutions" % "3.0.0",
"org.postgresql" % "postgresql" % "9.4.1212",
注意play slick postgresql的版本
2.在application.conf配置多数据源
其中default数据源使用mysql,postgresqldb(这是命名,随便写,和后面注入时一致即可)使用的是postgresql 10
slick.dbs.default {
driver = "slick.driver.MySQLDriver$"
db.driver = com.mysql.jdbc.Driver
db.url = "jdbc:mysql://localhost/playtest"
db.user = "root"
db.password = "root"
db.logSql = true
}
#登录 psql -h localhost -U postgres -d postgres -p 5432;
#查看客户端编码 show client_encoding;
#修改编码 set client_encoding to 'utf8';
slick.dbs.postgresqldb {
driver = "slick.driver.PostgresDriver$"
db.driver = org.postgresql.Driver
db.url = "jdbc:postgresql://127.0.0.1:5432/playtest"
db.user = "postgres"
db.password = "root"
db.logSql = true
}
default是默认的数据源,配置地点如下
play.db {
# The combination of these two settings results in "db.default" as the
# default JDBC pool:
config = "db"
default = "default"
# Play uses HikariCP as the default connection pool. You can override
# settings by changing the prototype:
prototype {
# Sets a fixed JDBC connection pool size of 50
#hikaricp.minimumIdle = 50
#hikaricp.maximumPoolSize = 50
}
}
因为config和default的默认值就是db、default,所以不需要改这里,可以忽略。
PS:如果是是slick2.x可以通过下面方式配置,slick3.0不需要考虑下面的,忽略即可。
db {
default.driver = com.mysql.jdbc.Driver
default.url = "jdbc:mysql://localhost/playtest"
default.username = "root"
default.password = "root"
default.logSql = true
}
当然也可以写成db.default.driver=xxx 这里default同样是表示默认的数据源,此时需要的在sbt加上jdbc依赖,通过注入
db: Database来使用,如果不是default,则需要加上名字如:@NamedDatabase("yourdatebase") db: Database
3.在DAO注入并引用多数据源
1)mysql
package dao
import javax.inject.Inject
import models.User
import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider}
import slick.jdbc.JdbcProfile
import scala.concurren