使用scalikejdbc操作數(shù)據(jù)庫(三)實例代碼

前言

前兩章我們已經(jīng)了解了scalikejdbc操作數(shù)據(jù)庫的基礎(chǔ)和項目中實際需要的一些注意點(diǎn),本章我們就直接搞上完整的實例代碼,實例是以操作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 "
創(chuàng)建連接池
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數(shù)據(jù)(事務(wù)操作)
// 只需要寫入對應(yīng)的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方式操作,唯一的區(qū)別是autoCommit可以讀也可以執(zhí)行更新類操作
DB(conn) autoCommit {implicit session =>
// 增刪改查都可以執(zhí)行
......
session.close()
}

上述方式都是打開一次連接執(zhí)行一次操作,如果想在一個連接中執(zhí)行多個操作,可以如下

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()

結(jié)束

通過這三篇文章簡單了解并能夠使用scalikejdbc去操作數(shù)據(jù)庫,希望對看到的有需要的小伙伴提供有用的幫助

歡迎對技術(shù)感興趣的小伙伴一起交流學(xué)習(xí),批評指正^^

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容