play中通过注入slick与mysql数据库连接

配置

在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](

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值