使用scalikejdbc操作数据库(三)实例代码

前言

前两章我们已经了解了scalikejdbc操作数据库的基础和项目中实际需要的一些注意点,本章我们就直接搞上完整的实例代码,实例是以操作mysql为例子。

配置文件

application.conf

app.mysql.demo.url = "jdbc:mysql://x.x.x.x:3306/xxx"
app.mysql.demo.user = "user"
app.mysql.demo.password = "password "
创建连接池
def getMySQLProp(key: String = "demo"): Properties = {
  val prop = new Properties
  prop.setProperty("url", SubsConfig(s"app.mysql.${key}.url"))
  prop.setProperty("driver", "com.mysql.jdbc.Driver")
  prop.setProperty("user", SubsConfig(s"app.mysql.${key}.user"))
  prop.setProperty("password", SubsConfig(s"app.mysql.${key}.password"))
  prop
}

def newMySQLSession(key: String) = {
  val db = getMySQL(key)
  Class.forName(db("driver"))
  if (!ConnectionPool.isInitialized(key)) {
    ConnectionPool.add(key, db("url"), db("user"), db("password"))
  }
  ConnectionPool.borrow(key)
}
增删改查
// 查询mysql
val conn = newMySQLSession("dmp")
 DB(conn) readOnly { implicit session =>
   session.list("SELECT id,name FROM user") { res =>
     ((res.int(1), res.string(2)))
   }
}
val conn = newMySQLSession("dmp")
 DB(conn) readOnly {implicit session =>
   SQL("SELECT id,name FROM user").map(r => (r.int(1),r.string(2))).list().apply()
 }
}
// 插入、更新、删除mysql数据(事务操作)
// 只需要写入对应的sql即可
val conn = newMySQLSession("dmp")
 DB(conn) localTx {implicit session =>
   session.update("INSERT INTO user (name) VALUES ('demo')")
 }
DB(conn) localTx {implicit session =>
  SQL("INSERT INTO user (name) VALUES ('demo')").update()
}
// autoCommit方式操作,唯一的区别是autoCommit可以读也可以执行更新类操作
DB(conn) autoCommit {implicit session =>
// 增删改查都可以执行
......
session.close()
}

上述方式都是打开一次连接执行一次操作,如果想在一个连接中执行多个操作,可以如下

val conn = newMySQLSession("dmp")
DB(conn) autoCommit { implicit session =>
  session.list("SELECT id,name FROM user") { res =>
    (res.int(1), res.string(2))
  }
  session.update("INSERT INTO user (name) VALUES ('demo')")
  session.update("DELETE FROM user WHERE name = 'demo'")
}
// 或者
DB(conn).autoClose(false) autoCommit { implicit session =>
  session.list("SELECT id,name FROM user") { res =>
    (res.int(1), res.string(2))
  }
  session.update("INSERT INTO user (name) VALUES ('demo')")
  session.update("DELETE FROM user WHERE name = 'demo'")
}
conn.close()

结束

通过这三篇文章简单了解并能够使用scalikejdbc去操作数据库,希望对看到的有需要的小伙伴提供有用的帮助

欢迎对技术感兴趣的小伙伴一起交流学习,批评指正^^

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容