最近做一个SparkStreaming的小项目,需要将数据存到mysql数据库,在scala中有一个基于SQL的数据库访问库就是scalikeJDBC,使用方法如下:

简介:
ScalikeJDBC是Scala开发人员基于SQL的简洁数据库访问库。
该库自然包装JDBC API,为您提供易于使用且非常灵活的API。
更重要的是,QueryDSL使您的代码类型安全且可重用。
ScalikeJDBC是一个实用且适合生产的产品。 将此库用于实际项目。

maven项目添加依赖,然后添加配置文件。
第一步添加依赖:在pom.xml文件中添加依赖

<dependency>
    <groupId>org.scalikejdbc</groupId>
    <artifactId>scalikejdbc_2.11</artifactId>
    <version>2.5.0</version>
</dependency>
<dependency>
    <groupId>org.scalikejdbc</groupId>
    <artifactId>scalikejdbc-config_2.11</
    <version>2.5.0</
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

第二步添加配置文件,注意这里的配置文件名字需要为application.conf,这样在第三步中,才可以使用setup导入配置文件,否则需要使用setupAll来导入,配置文件如下,这是最基本的配置,如果对于连接池还有其他属性设置,可以添加

// 默认的配置就是db.default.xxx,如果使用其他配置需要setup('name)指明
db.default.driver="com.mysql.jdbc.Driver"
db.default.url="jdbc:mysql://localhost/databasename?characterEncoding=utf-8"
db.default.user="username"
db.default.password="password"
 
// 连接池配置格式如下,具体属性可以百度
// 连接池初始大小
// db.default.poolInitialSize=100

第三步就是最基本的增删改查了

// 加载配置
DBs.setup()
// 更新使用的是autoCommit
DB.autoCommit(implicit session=>{
  // SQL里面是普通的sql语句,后面bind里面是语句中"?"的值,update().apply()是执行语句
  SQL("update tablename set columname=? where columname=?").bind(xx,xx).update().apply()
})
// 插入使用的是localTx
DB.localTx(implicit session=>{
  SQL("insert into tablename values(?,?,?)").bind(xxx,xxx,xxx).update.apply()
})
// 删除使用的也是autoCommit
DB.autoCommit(implicit session=>{
  SQL("delete from dataname where xx=?").bind(xx).update().apply()
})
// 读取使用的是readOnly
val a: List[Int] = DB.readOnly(implicit session => {
  SQL("select * from xx").map(rs => {
    rs.int("xx")
  }).list().apply()
})