前言
前兩章我們已經(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í),批評指正^^