一、背景
由於項目需要,需要在Sbt+Scala項目中連接MySQL數據庫。由於之前使用Maven+Java進行依賴管理偏多,在Sbt+Scala方面也在不斷進行摸索,特此記錄,作為小模塊知識的積累。
二、系統環境
Scala、Sbt、IDE的版本分別如下
Scala版本 ==> 2.11.8
Sbt版本 ==> 0.13.8
Idea Intellij版本 ==> 2016.2.2
三、步驟
3.1 新建SBT項目
3.2 添加Student類和程序入口
項目結構如下圖所示
其中Student代碼如下
package com.hust.grid.leesf.domain /** * Created by LEESF on 2016/8/28. */ class Student(val id: Int, val name: String, val age: Int) { override def toString = "id = " + id + ", name = " + name + ", age = " + age }
MySQLDemo代碼如下
package com.hust.grid.leesf.entrance import java.sql.{Connection, DriverManager, SQLException} import com.hust.grid.leesf.domain.Student /** * Created by LEESF on 2016/8/28. */ object MySQLDemo { def main(args: Array[String]): Unit = { val url = "jdbc:mysql://localhost:3306/test?user=root&useUnicode=true&characterEncoding=utf-8" var conn: Connection = null try { // load mysql driver classOf[com.mysql.jdbc.Driver] conn = DriverManager.getConnection(url) val stmt = conn.createStatement val sql = "select * from student" val rs = stmt.executeQuery(sql) while (rs.next) { println(new Student(rs.getInt(1), rs.getString(2), rs.getInt(3))) } } catch { case e: SQLException => e.printStackTrace case e: Exception => e.printStackTrace } finally { if (conn != null) { conn.close } } } }
build.sbt代碼如下
name := "MySQLDemo" version := "1.0" scalaVersion := "2.11.8" libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.6"
3.3 新建Student表
選定test數據庫
執行SQL腳本如下
CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` tinyint(2) DEFAULT NULL, PRIMARY KEY (`id`) );
插入記錄腳本如下
insert into student(name, age) values("leesf", 24); insert into student(name, age) values("dyd", 24);
3.4 執行程序
執行MySQLDemo
結果如下
id = 1, name = leesf, age = 24
id = 2, name = dyd, age = 24
說明:以上結果表明已經成功訪問數據庫,並取得其中的數據。
四、總結
以上記錄了使用SBT+Scala訪問MySQL數據的過程,整個Demo已經上傳至github,有需要的園友可以直接fork,謝謝各位園友的觀看。