scalikeJDBC

 

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caiyefly/article/details/78045526

ScalikeJDBC基于SQL的简介DB访问

1.  什么是ScalikeJDBC

ScalikeJDBC是一款给Scala开发者使用的简洁DB访问类库,它是基于SQL的,使用者只需要关注SQL逻辑的编写,所有的数据库操作都交给ScalikeJDBC。这个类库内置包含了JDBC API,并且给用户提供了简单易用并且非常灵活的API。并且,QueryDSL(通用查询查询框架)使你的代码类型安全的并且可重复使用。我们可以在生产环境大胆地使用这款DB访问类库。

2.  项目中使用ScalikeJDBC

2.1. 添加依赖

<!-- scalikejdbc_2.11 -->
  <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</artifactId>
    <version>2.5.0</version>
</dependency>
  
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

 

 

2.2. 数据库CURD

2.2.1.  配置数据库信息

# MySQL example
  db.default.driver="com.mysql.jdbc.Driver"
  db.default.url="jdbc:mysql://localhost/bbs?characterEncoding=utf-8"
  db.default.user="root"
  db.default.password="123456"

 

# db.sheep.driver="com.mysql.jdbc.Driver"
# db.sheep.url="jdbc:mysql://localhost/bbs"
# db.sheep.user="root"
# db.sheep.password="123456"

 

或者

更多配置请参考官网.

2.2.2.  加载数据配置信息

// 加载数据库配置信息
// 默认加载db.default.*
DBs.setup()

 

// 加载db.sheep配置信息
DBs.setup('sheep)

 

2.2.3.  查询数据库并封装数据

// 加载数据库配置信息
  // 默认加载db.default.*
  DBs.setup()
// 查询数据并返回单个列, 并将列数据封装到集合中
  val list: List[String] = DB readOnly { implicit session =>
    sql"select content from post".map(rs => rs.string("content")).list().apply()
}
  for (s <- list ) {
    println(s)
}

 

// 用户实体
case class Users(id: String, name: String, nickName: String)
/**
  * 查询数据库,并将数据封装成对象,并返回一个集合
  */
// 初始化数据库链接
DBs.setup('sheep)
val userses: List[Users] = NamedDB('sheep) readOnly { implicit session =>
    sql"SELECT * from users".map(rs => Users(rs.string("id"), rs.string("name"), rs.string("nickname"))).list().apply()
}
for (usr <- userses ) {
    println(usr.nickName)
}

 

2.2.4.  插入数据

2.2.4.1.        AutoCommit

/**
  * 插入数据, 使用autoCommit
  */
val insertResult: Int = DB.autoCommit { implicit session =>
    SQL("insert into users(name, nickname) values(?,?)").bind("test01", "test01").update().apply()
}
println(insertResult)

 

2.2.4.2.        插入返回主键标识

/**
  * 插入数据, 并返回主键
  */
val id: Long = DB.localTx(implicit session => {
    sql"INSERT INTO users(name, nickname, sex) VALUES (?,?,?)".bind("测试", "000", 1).updateAndReturnGeneratedKey("nickname").apply()
})
println(id)

 

2.2.4.3.        事务插入

/**
  * 使用事务插入数据库
  */
val tx: Int = DB.localTx { implicit session =>
    sql"INSERT INTO users(name, nickname, sex) VALUES (?,?,?)".bind("犊子", "000", 1).update().apply()
    // var s = 1 / 0
    SQL("INSERT INTO users(name, nickname, sex) values(?,?,?)").bind("王八犊子", "xxx", 0).update().apply()
}
println(s"tx = ${tx}")

 

2.2.5.  更新数据

/**
  * 更新数据
  */
DB.localTx{ implicit session =>
    sql"UPDATE users SET pwd = ?".bind("88999").update().apply()
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值