初识Scalikejdbc
官网
- ScalikeJDBC 是一款给 Scala 开发者使用的简洁 DB 访问类库,它是基于 SQL 的,使用者
只需要关注 SQL 逻辑的编写,所有的数据库操作都交给 ScalikeJDBC。这个类库内置包含了
JDBC API,并且给用户提供了简单易用并且非常灵活的 API。并且,QueryDSL(通用查询查询
框架)使你的代码类型安全的并且可重复使用。我们可以在生产环境大胆地使用这款 DB 访问
类库。 - 本次使用的 Scala 版本为 2.12.10
1. POM 中增加
<dependency>
<groupId>org.scalikejdbc</groupId>
<artifactId>scalikejdbc_2.12</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.scalikejdbc</groupId>
<artifactId>scalikejdbc-config_2.12</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
2. 增加配置文件
- 配置文件默认路径: src/main/resources/application.conf
# JDBC settings
db.default.driver="com.mysql.jdbc.Driver"
db.default.url="jdbc:mysql://bigdatatest01:3306/bigdata"
db.default.user="root"
db.default.password="123456"
# Connection Pool settings
db.default.poolInitialSize=5
db.default.poolMaxSize=7
# poolConnectionTimeoutMillis defines the amount of time a query will wait to acquire a connection
# before throwing an exception. This used to be called `connectionTimeoutMillis`.
db.default.poolConnectionTimeoutMillis=1000
db.default.poolValidationQuery="select 1 as one"
db.default.poolFactoryName="commons-dbcp2"
3. 对数据库 CRUD 操作
package com.xk.bigdata.scala.scalikejdbc
import scalikejdbc.{DB, SQL}
import scalikejdbc.config.DBs
/**
* 1. 插入数据
* 2. 查询数据
* 3. 删除数据
* 4. 通过事务进行插入两条数据
*/
object CRUDDemo {
/**
* 插入数据
*/
def insert(): Unit = {
DB.autoCommit(implicit session => {
SQL("insert into tes1t (id,name) values(?,?)")
.bind(10, "10")
.update()
.apply()
})
}
/**
* 查询数据
*/
def query(): Unit = {
DB.readOnly(implicit session => {
val data = SQL("select * from tes1t")
.map(rs => {
tes1t(rs.int("id"), rs.string("name"))
}).toList().apply()
data.foreach(println)
})
}
/**
* 删除数据
*/
def delete(): Unit = {
DB.autoCommit(implicit session => {
SQL("delete from tes1t where id = ?")
.bind(10)
.update()
.apply()
})
}
/**
* 通过事务进行插入两条数据
*/
def transaction(): Unit = {
DB.localTx(implicit session => {
SQL("insert into tes1t (id,name) values(?,?)")
.bind(11, "11")
.update()
.apply()
SQL("insert into tes1t (id,name) values(?,?)")
.bind(12, "12")
.update()
.apply()
})
}
def main(args: Array[String]): Unit = {
// 开启 Scalikejdbc,以及加载配置文件
DBs.setupAll()
// 插入数据
insert()
// 查询数据
query()
// 删除数据
delete()
// 通过事务进行插入两条数据
transaction()
}
case class tes1t(id: Int, name: String)
}