首页 > 解决方案 > 以编程方式灵活访问数据源

问题描述

我有一个这样的对象:

object DatabaseFactory {

  import slick.jdbc.PostgresProfile.api._

  private val db = Database.forConfig("database.postgresql")

  def getDatabase = db
}  

和这样的配置:

database {
    postgresql {
      connectionPool = "HikariCP"
      dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
      properties = {
          serverName = "localhost"
          portNumber = "5432"
          databaseName = "myProject"
          user = "user"
          password = "userPass"
      }
      numThreads = 10
    }
} 

有什么方法可以从 slick 获取 javax.sql.DataSource 吗?
我需要一个来自 slick 的PGSimpleDataSource实例。

我想在 Flyway 配置上使用它:

Flyway.configure()
      .baselineOnMigrate(true)
      .locations("filesystem:/etc/myProject/db-scripts")
      .dataSource(??? Need DataSource ???)

标签: scalaslickslick-3.0

解决方案


有什么方法可以从 slick 获取 javax.sql.DataSource 吗?

我不这么认为,但我能够获得一个 slick.jdbc.JdbcDataSource 的实例,然后我使用了与我一直使用 javax.sql.DataSource 完全相同的方式。创建连接,然后是preparedstatement,然后处理结果集。全部都一样。

db.source

我知道这很旧,但想提供一个尝试的选项,它不像创建自己的数据源实例的其他答案那样激烈。


推荐阅读