`

Slick2 使用笔记(5) 配置数据源

 
阅读更多

本文来自:fair-jm.iteye.com 转截请注明出处

 

Slick2可以使用内置的Database(使用时导入对应数据库的对应的包

比如mysql是:import scala.slick.driver.MySQLDriver.simple._) 的 forURL方法(这个方法通过DriverManager来拿到连接 这个在前面的几个笔记里都有

还有forDriver是直接通过Driver来拿到连接)来拿到数据库连接 

Slick2也可以通过forName(JNDI)和forConfig(通过配置)的方式拿到

 

这篇po要说的是forDataSource这个方法

    /**
     * Create a Database based on a DataSource.
     */
    def forDataSource(ds: DataSource): DatabaseDef = new DatabaseDef {
      def createConnection(): Connection = ds.getConnection
    }

 这个DataSource类是:javax.sql.DataSource 

 

 

这边简单说下使用数据源的方式

数据源我这里使用阿里的Druid 这个选用哪个是无所谓的 看个人爱好吧

习惯使用Spring xml方式配置dataSource的同学 可能会对在代码上配置感到陌生 但其实也挺简单的 

配置代码如下:

package infrastructure

import com.alibaba.druid.pool.DruidDataSource
import javax.sql.DataSource

sealed class DS(val config: DataSourceConfig) {
  private val dataSource = new DruidDataSource
  conf(config)

  def get: DataSource = {
    sync(!dataSource.isInited(), dataSource.init(), dataSource)
    dataSource
  }

  def close = {
    sync(dataSource.isInited(), dataSource.close(), dataSource)
  }

  private def sync(test: => Boolean, op: => Unit, lock: AnyRef) = {
    if (test)
      lock.synchronized {
        if (test) op
      }
  }

  private def conf(config: DataSourceConfig): Unit = {
    dataSource.setUrl(config.url)
    dataSource.setUsername(config.name)
    dataSource.setPassword(config.password)
    dataSource.setInitialSize(config.initSize)
    dataSource.setMinIdle(config.minIdle)
    dataSource.setMaxActive(config.maxActive)
    dataSource.setValidationQuery(config.validateQuery)
  }
}

object DS {
  val _lock = new Object
  val db = new DS(new MyDataSourceConfig)
  def apply() = {
    _lock.synchronized {
      db.get
    }
  }

  def apply(conf: DataSourceConfig) = {
    _lock.synchronized {
      db.conf(conf)
      db.dataSource.restart()
      db.get
    }
  }
}

trait DataSourceConfig {
  def url: String
  def name: String
  def password: String
  def initSize: Int = 1
  def minIdle: Int = 1
  def maxActive: Int
  def validateQuery = "select 'x'"
}

class MyDataSourceConfig extends DataSourceConfig {
  def url = "jdbc:mysql://localhost:3306/cqrs"
  def name = "root"
  def password = ""
  def maxActive = 10
}

 

 关于以上几个参数 可以参考druid的github

 

使用也很简单:

Database.forDataSource(DS()).withSession {
      implicit session =>
        q.list
}

 

 

0
0
分享到:
评论

相关推荐

    Slick2D Game Development

    A simple guide, packed with tutorials that ease you into learning about the Slick game workflow and Slick game library. Who this book is written for If you are a game programmer who would like to ...

    SlickEdit配置.zip

    用顺手一年多的SlickEdit配置,配置文件是是升级到2019版本后打包出来的,包括增加自定义快捷键,主题配色字体,窗口布局,右键菜单等各种方面。除了一两个噪点外,个人使用的感觉非常好。

    SlickEdit Pro V23使用MDK5工具编译STM32的例程

    非本人原创,原有说明基于老版本的slickedit和MDK,在此作者使用最新版本的工具做了重新编辑并验证通过。...使用一个简单的工程来演示slickedit2018中编译MDK5项目。里面有详细的说明文档和工程代码

    slick-pg, PostgreSQL扩展扩展.zip

    slick-pg, PostgreSQL扩展扩展 pg 用于PostgreSQL的扩展扩展,支持一系列pg数据类型和相关运算符/函数。目前支持的pg类型:ARRAY日期/时间Enum范围HstoreLTreeJSONinet/macaddrtext 搜索

    slick2d-examples-1.0.1.zip

    slick2d-maven.zip,slick2d库使用示例slick2d gava游戏开发库的七个发行版

    slickedit_使用

    slickedit 的一些使用技巧,帮助开发者快速掌握silkedit工具

    SlickEdit使用技巧整理.docx

    文档里整理了slickedit使用四年多来的技巧和相关设置。

    SlickEdit18配置文件

    前前后后修改用了一两个月,基本稳定使用的配置文件!这个是Linux下配置文件,Windows系统导入时有一些错误。windows开发环境多用的少,懒得去改,要用的自己修改,切记 使用方法:tool->options->Export/Import ...

    SlickEdit18配置文件V2.0

    随着使用,发现还是有些地方不甚满意(越是好用的工具,我们要求的反而越多撒-_-|||) 废话不多说,标记: 之前采用Vc6.0模拟器,现因在做android用多了Eclipse,于是就改用Eclipse模拟器啦~用不惯的别下了,里面有很...

    我的SlickEdit17设置文件

    我的SlickEdit17配置文件,部分设置更符合开发人员的使用感受。

    Slick Edit v21简单配置,让你看得更舒服,都是截图

    简单配置Slick Edit V21,让眼睛看得更舒服,编程变得更快捷和方便。

    SlickEdit_2009使用

    SlickEdit_2009使用,very good!

    slickedit1702的自用windows配置

    slickedit 17.0.2 windows版的配置文件

    slickedit 2014 v19 linux 32bit part2

    解压方法step 1三个文件合成一个cat slickedit_linux_32bit.tar.gz.a* >slickedit.tar.gz step 2 tar xzvf slickedit.tar.gz slickedit 2014 v19 linux 32位版的 已经和谐了,step1:解压后执行vsinst安装,安装过程...

    slickedit2010_win_part5

    slickedit2010_win slickedit2010_win

    钓鱼女孩,使用 Slick 2d 的简单钓鱼游戏。

    钓鱼女孩,使用 Slick 2d 的简单钓鱼游戏。 文件 Fishing-Girl-master.zip 包含以下条目。 .classpath/*w w w . j a va 2s . com*/ .gitignore .project .settings/org.eclipse.jdt.core.prefs OpenAL32.dll data/...

    slickedit 16.0.0.3 绿色 破解版 part2

    slickedit 16.0.0.3 绿色 破解版,自己做的,非常方便,运行.\config\start_slickedit16.bat即可,生成的配置也在.\config下

    slickedit 17.0.2 linux 64bit

    slickedit 17.0.2 linux vs_exe 覆蓋即可

    slickedit 17.0.0.8安装包(linux64 part 1)

    slickedit 17.0.0.8安装包及其破解文件(linux 64位系统) ...slickedit 官网已更新到17.0.2, 目前没有破解文件。 网上的17.0.0.8安装包基本找不到, 我这里有备份,其中包含破解文件。 文件太多, 我分成两个压缩包。

    slickedit BIOS 語法

    如果有使用slickedit來開發BIOS, 一些副檔案無法高亮度字型,例如*.dec, *.dsc, *.fdf, *.uni, *.vfr, 導入此語法可以幫助BIOS工程師更容易review source code 順便提供ACPI裡面的ASL code的高亮度語法

Global site tag (gtag.js) - Google Analytics