`

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
分享到:
评论

相关推荐

    SlickEdit配置.zip

    SlickEdit是一款强大的源代码编辑器,被许多程序员视为SourceInsight的有效替代品。这款编辑器以其丰富的功能、高度可定制性和高效的代码编辑体验而受到赞誉。本文将深入探讨SlickEdit的配置方面,以及如何利用提供...

    slick2d-examples-1.0.1.zip

    《Slick2D游戏开发库详解与实例演示》 Slick2D,作为一个基于Java的2D游戏开发库,为开发者提供了丰富的功能和便捷的API,使得2D游戏的创建变得简单而高效。这个名为“slick2d-examples-1.0.1.zip”的压缩包,包含...

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

    Slick Edit是一款强大的源代码编辑器,被许多程序员用来提高编程效率。V21版本引入了更多特性,旨在提供更好的用户体验和工作效率。本教程将详细解释如何对Slick Edit v21进行简单配置,使你的编程环境更加舒适,...

    slickedit_使用

    SlickEdit 使用技巧积累 SlickEdit 是一款功能强大且价格昂贵的编辑器,拥有许多实用的功能和技巧。本文将对 SlickEdit 的一些使用技巧进行总结和讲解,帮助开发者快速掌握 SlickEdit 工具。 1. 隐藏某个大括号内...

    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 ...

    slick-pg, PostgreSQL扩展扩展.zip

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

    钓鱼女孩,使用 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/...

    slickedit1702的自用windows配置

    《SlickEdit 17.0.2在Windows平台上的个性化配置详解》 SlickEdit是一款功能强大的源代码编辑器,深受程序员喜爱。其自定义配置能力使得每个用户可以根据个人习惯和项目需求调整编辑环境,从而提高编程效率。本文将...

    SlickEdit18配置文件

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

    SlickGrid基于jQuey的ui插件

    4. **初始化配置**:配置SlickGrid的列定义、数据源、选项等。 5. **实例化SlickGrid**:调用SlickGrid的构造函数,将配置信息传入,生成表格实例。 6. **绑定事件**:根据需要监听SlickGrid的各种事件,如...

    Linux 开发环境搭建与使用-SlickEdit 的安装与配置.docx

    ### Linux开发环境搭建与使用——SlickEdit的安装与配置 #### 一、SlickEdit简介 SlickEdit是一款功能强大的跨平台代码编辑器,它支持超过40种编程语言,包括C/C++、C#、Java、HTML、XML等。这款编辑器的设计初衷...

    WEB表格控件 SlickGrid

    - **初始化Grid**:创建一个div作为Grid容器,并配置列定义和数据源。 - **设置DataView**:创建DataView实例并与Grid关联。 - **加载数据**:将数据加载到DataView中,Grid会自动更新。 - **添加插件**:根据...

    代码编辑器SlickEdit 23.0.2 配置文件夹

    2. **语法高亮**:为了提高代码可读性,SlickEdit支持多种编程语言的语法高亮。配置文件夹可能包含`.slkcolors`文件,用于定义各种语言的语法颜色方案。 3. **自定义模板**:用户可以创建和保存自己的代码模板,...

    我的SlickEdit17设置文件

    SlickEdit是一款强大的文本编辑器,深受程序员喜爱,尤其适合多语言编程环境。这款编辑器提供了高度可定制...对于使用SlickEdit的开发人员来说,导入这样的配置可以快速调整编辑器以满足自己的工作需求,提升工作效率。

    SlickGrid-api.docx

    其中,容器节点是网格控件将要渲染的容器,数据源是网格控件要显示的数据,列定义是网格控件的列配置,选项对象是网格控件的配置选项。 Core Slick.Grid 的 Core 部分提供了网格控件的核心功能,包括获取数据、设置...

    SlickEdit18配置文件V2.0

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

    SlickEdit的配置文件

    SlickEdit是一款强大的源代码编辑器,被广泛用于多种编程语言的开发,因其高效和功能丰富而备受程序员喜爱。在SlickEdit中,配置文件起着至关重要的作用,它们允许用户自定义编辑器的行为,以适应不同的开发需求和...

    SLICK轮播图插件

    SLICK轮播图插件是一款在前端开发中广泛使用的JavaScript插件,专为创建美观、交互性强的轮播图而设计。它具有多种功能,能满足开发者对于动态展示内容的需求,如图片滑动、自动播放、分页指示器、箭头导航等。这款...

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

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

    SlickGrid-master.zip

    这个名为"SlickGrid-master.zip"的压缩包很可能包含了SlickGrid的完整源代码和相关资源,让我们深入了解一下SlickGrid的核心特性和使用方法。 首先,SlickGrid的灵活性体现在其允许用户自由地隐藏和显示列。这在...

Global site tag (gtag.js) - Google Analytics