当前位置: 首页 > 工具软件 > scalikejdbc > 使用案例 >

初识Scalikejdbc

贺海
2023-12-01

初识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)

}
 类似资料: