ScalikeJDBC的基本使用

这几天做一个SparkStreaming的小项目,需要将数据存到mysql数据库,在scala中有一个基于SQL的数据库访问库就是scalikeJDBC,这是官方文档的谷歌翻译

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

所以就尝试了一下,使用还是比较方便的,如果是maven项目的话只需要添加依赖,然后添加配置文件就可以使用了,美中不足的是他原生支持的连接池版本比较老,如果想用新版本的连接池需要额外的配置。

在IDEA-MAVEN项目中使用比较简单,第一步添加依赖:在pom.xml文件中添加依赖

<!--sclikeJDBC-->
<dependency>
    <groupId>org.scalikejdbc</groupId>
    <artifactId>scalikejdbc_2.11</artifactId>
    <version>2.5.0</version>
</dependency>
<!-- scalikejdbc-config_2.11 -->
<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()
})

使用就到此结束了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值