配置
在build.sbt中加入
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-slick" % "3.0.0",
"mysql" % "mysql-connector-java" % "5.1.34",
"com.typesafe.play" %% "play-slick-evolutions" % "3.0.0"
)
application.conf里面配置默认数据库:
slick.dbs.default.driver = "slick.driver.MySQLDriver$"
slick.dbs.default.db.driver = "com.mysql.jdbc.Driver"
slick.dbs.default.db.url = "jdbc:mysql://localhost:3306/pratice?useUnicode=true&characterEncoding=utf8&useSSL=false"
slick.dbs.default.db.user = "root"
slick.dbs.default.db.password = "123456"
配置多个数据库:
# Orders database
slick.dbs.orders.driver="slick.driver.MySQLDriver$"
slick.dbs.orders.db.driver = "com.mysql.jdbc.Driver"
slick.dbs.orders.db.url = "jdbc:mysql://localhost:3306/orders?useUnicode=true&characterEncoding=utf8&useSSL=false"
slick.dbs.orders.db.user = "root"
slick.dbs.orders.db.password = "123456"
# Customers database
slick.dbs.customers.driver="slick.driver.MySQLDriver$"
slick.dbs.customers.db.driver = "com.mysql.jdbc.Driver"
slick.dbs.customers.db.url = "jdbc:mysql://localhost:3306/customers?useUnicode=true&characterEncoding=utf8&useSSL=false"
slick.dbs.customers.db.user = "root"
slick.dbs.customers.db.password = "123456"
slick数据库实例
正确配置slick数据库后,就可以通过依赖注入的方式获得slick实例
注意:Slick数据库实例管理线程池和连接池。通常,您不需要在代码中显式关闭数据库(通过调用其close方法),因为Play Slick模块已经解决了这个问题。
下面是如何为默认数据库(即配置中名为default的数据库)注入DatabaseConfig实例的示例:
class Application @Inject() (
protected val dbConfigProvider: DatabaseConfigProvider,
cc: ControllerComponents
)(implicit ec: ExecutionContext)
extends AbstractController(cc) with HasDatabaseConfigProvider[JdbcProfile] {
slick可以同时连接多个数据库,为不同的数据库注入DatabaseConfig实例也很容易。你可以简单地将注释@NamedDatabase(“”)添加到dbConfigProvider构造函数参数中(应该将字符串“”替换为您要使用的数据库配置的名称):
class Application2 @Inject() (
@NamedDatabase("<db-name>") protected val dbConfigProvider: DatabaseConfigProvider,
cc: ControllerComponents
)(implicit ec: ExecutionContext) extends AbstractController(cc) with HasDatabaseConfigProvider[JdbcProfile] {
在controller里面执行一个数据库查询操作
import dbConfig.profile.api._
def index(name: String) = Action.async { implicit request =>
val resultingUsers: Future[Seq[User]] = db.run(Users.filter(_.name === name).result)
resultingUsers.map(users => Ok(views.html.index(users)))
}
[参考文献:Using Play Slick](