Java Scala實(shí)現(xiàn)數(shù)據(jù)庫增刪查改操作詳解
添加jar包
這里的Scala不是maven工程所以要找到項(xiàng)目結(jié)構(gòu)(快捷鍵:同時(shí)按住Ctrl+shift+Alt+s)在模塊里面添加添加MySQL的jar包,如果是Maven工程可以直接在pom里面直接加即可

實(shí)現(xiàn)操作數(shù)據(jù)庫需要兩個(gè)類,一個(gè)用于測試的Demo,一個(gè)用于實(shí)現(xiàn)增刪查改的Util方法
在MysqlDemo在這里需要用到伴生類和伴生對象,伴生類主要是實(shí)現(xiàn)連接數(shù)據(jù)庫
class MysqlDemo {
// 連接數(shù)據(jù)庫 底層原理還是jdbc
//驅(qū)動(dòng)名稱
var driver = "com.mysql.cj.jdbc.Driver"
// 訪問MySQL服務(wù)器,通過3306端口訪問mysql數(shù)據(jù)庫
var url = "jdbc:mysql://192.168.152.184:3306/exam"
//用戶名
var user = "root"
//密碼
var password = "123456"
//輔助構(gòu)造器
def this(driver: String, url: String, user: String, pwd: String) {
this()
this.driver = driver
this.url = url
this.user = user
this.password = pwd
}
}伴生對象則主要是實(shí)現(xiàn)操作數(shù)據(jù)庫 ,需要先實(shí)現(xiàn)apply方法,主函數(shù)里面創(chuàng)建對象調(diào)用apply方法,調(diào)用連接方法和釋放資源
object MysqlDemo {
// 實(shí)現(xiàn)apply方法
def apply(): MysqlDemo = new MysqlDemo()
def apply(driver: String, url: String, user: String, pwd: String): MysqlDemo = new MysqlDemo(driver, url, user, pwd)
def main(args: Array[String]): Unit = {
//創(chuàng)建對象,調(diào)用apply方法
val demo = MysqlDemo()
//導(dǎo)入MySQLUtil包
import MysqlUtil._
//調(diào)用創(chuàng)建連接的方法
demo.conn()
// 調(diào)用釋放資源方法
demo.close(connection)
/**操作數(shù)據(jù)庫代碼*/
}Util則需要先初始化數(shù)據(jù)庫連接,注冊驅(qū)動(dòng),得到數(shù)據(jù)庫連接,釋放資源
import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}
object MysqlUtil {
implicit class MysqlOp(obj: MysqlDemo) {
//初始化數(shù)據(jù)連接
private var connection: Connection = _
def conn(): Connection = {
//注冊driver
Class.forName(obj.driver)
//得到數(shù)據(jù)庫連接
val connection: Connection = DriverManager.getConnection(obj.url, obj.user, obj.password)
connection
}
//釋放資源
def close(conn: Connection): Unit = {
if (conn != null) {
conn.close()
}
}
}準(zhǔn)備工作已做完下面要實(shí)現(xiàn)對數(shù)據(jù)庫的增刪查改
添加數(shù)據(jù)
方法一
//Util代碼
//添加數(shù)據(jù)方法一
def insertStudent: Int = {
val insertSqlStr = "insert into student(name, age, gender, telephone, email, classid)" +
"values ('周七', 6, '男', '13888888888', '346497@qq.com', 2)"
val i: Int = conn().createStatement.executeUpdate(insertSqlStr)
i
}
//Demo測試代碼
//添加數(shù)據(jù)方法一
val i: Int = demo.insertStudent
if (i == 1) {
println("添加成功")
} else if (i == 0) {
println("添加失敗")
}方法二
//Util代碼
//添加數(shù)據(jù)方法二
def insertStudent(name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = {
val insertSqlStr = "insert into student(id,name, age, gender, telephone, email, classid)" +
"values (null,?,?,?,?,?,?)"
val preStmt: PreparedStatement = conn().prepareStatement(insertSqlStr)
preStmt.setString(1, name)
preStmt.setInt(2, age)
preStmt.setString(3, gender)
preStmt.setString(4, telephone)
preStmt.setString(5, email)
preStmt.setInt(6, classid)
val i: Int = preStmt.executeUpdate()
i
}
//Demo測試代碼
//添加數(shù)據(jù)方法二
val i: Int = demo.insertStudent("aaa", 18, "男", "12345678910", "34649756@qq.com", 1)
if (i == 1) {
println("添加成功")
} else if (i == 0) {
println("添加失敗")
}刪除數(shù)據(jù)
//Util代碼
def deleteStudent(id: Int): Int = {
val deleteSql = "delete from student where id= ?"
val preStmt: PreparedStatement = conn().prepareStatement(deleteSql)
preStmt.setInt(1, id)
val i: Int = preStmt.executeUpdate()
i
}
//Demo測試代碼
val i: Int = demo.deleteStudent(21)
if (i == 1) {
println("刪除成功")
} else if (i == 0) {
println("刪除失敗")
}查詢數(shù)據(jù)
//Util代碼
def selectStudent: Unit = {
val selectSql = "select id,name, age, gender, telephone, email, classid from student"
val rs: ResultSet = conn().createStatement().executeQuery(selectSql)
println("學(xué)號(hào)\t姓名\t年齡\t性別\t手機(jī)號(hào)\t郵箱\t班級編號(hào)")
while (rs.next()) {
val id: Int = rs.getInt("id")
val name: String = rs.getString("name")
val age: Int = rs.getInt("age")
val gender: String = rs.getString("gender")
val telephone: String = rs.getString("telephone")
val email: String = rs.getString("email")
val classid: String = rs.getString("classid")
println(id + "\t" + name + "\t" + age + "\t" + gender + "\t" + telephone + "\t" + email + "\t" + classid)
}
}
//Demo測試代碼
demo.selectStudent修改數(shù)據(jù)
//Util代碼
def updateStudent(id: Int, name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = {
val updateSql = "update student set name=?," + "age=?, " + "gender=?," +
"telephone=?," + "email=?, " + "classid=? where id=?"
val preStmt: PreparedStatement = conn().prepareStatement(updateSql)
preStmt.setString(1, name)
preStmt.setInt(2, age)
preStmt.setString(3, gender)
preStmt.setString(4, telephone)
preStmt.setString(5, email)
preStmt.setInt(6, classid)
preStmt.setInt(7, id)
val i: Int = preStmt.executeUpdate()
i
}
//Demo測試代碼
val i: Int = demo.updateStudent(22, "test", 25, "女", "123456789", "369852@qq.com", 2)
if (i == 1) {
println("修改成功")
} else if (i == 0) {
println("修改失敗")
}完整代碼
MysqlUtil代碼
import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}
object MysqlUtil {
implicit class MysqlOp(obj: MysqlDemo) {
//初始化數(shù)據(jù)連接
private var connection: Connection = _
def conn(): Connection = {
//注冊driver
Class.forName(obj.driver)
//得到數(shù)據(jù)庫連接
val connection: Connection = DriverManager.getConnection(obj.url, obj.user, obj.password)
connection
}
//釋放資源
def close(conn: Connection): Unit = {
if (conn != null) {
conn.close()
}
}
//添加數(shù)據(jù)方法一
def insertStudent: Int = {
val insertSqlStr = "insert into student(name, age, gender, telephone, email, classid)" +
"values ('bbb', 6, '男', '13852277346', '3464975236@qq.com', 2)"
val i: Int = conn().createStatement.executeUpdate(insertSqlStr)
i
}
//添加數(shù)據(jù)方法二
def insertStudent(name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = {
val insertSqlStr = "insert into student(id,name, age, gender, telephone, email, classid)" +
"values (null,?,?,?,?,?,?)"
val preStmt: PreparedStatement = conn().prepareStatement(insertSqlStr)
preStmt.setString(1, name)
preStmt.setInt(2, age)
preStmt.setString(3, gender)
preStmt.setString(4, telephone)
preStmt.setString(5, email)
preStmt.setInt(6, classid)
val i: Int = preStmt.executeUpdate()
i
}
//刪除數(shù)據(jù)
def deleteStudent(id: Int): Int = {
val deleteSql = "delete from student where id= ?"
val preStmt: PreparedStatement = conn().prepareStatement(deleteSql)
preStmt.setInt(1, id)
val i: Int = preStmt.executeUpdate()
i
}
//修改數(shù)據(jù)
def updateStudent(id: Int, name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = {
val updateSql = "update student set name=?," + "age=?, " + "gender=?," +
"telephone=?," + "email=?, " + "classid=? where id=?"
val preStmt: PreparedStatement = conn().prepareStatement(updateSql)
preStmt.setString(1, name)
preStmt.setInt(2, age)
preStmt.setString(3, gender)
preStmt.setString(4, telephone)
preStmt.setString(5, email)
preStmt.setInt(6, classid)
preStmt.setInt(7, id)
val i: Int = preStmt.executeUpdate()
i
}
//查詢數(shù)據(jù)
def selectStudent: Unit = {
val selectSql = "select id,name, age, gender, telephone, email, classid from student"
val rs: ResultSet = conn().createStatement().executeQuery(selectSql)
println("學(xué)號(hào)\t姓名\t年齡\t性別\t手機(jī)號(hào)\t郵箱\t班級編號(hào)")
while (rs.next()) {
val id: Int = rs.getInt("id")
val name: String = rs.getString("name")
val age: Int = rs.getInt("age")
val gender: String = rs.getString("gender")
val telephone: String = rs.getString("telephone")
val email: String = rs.getString("email")
val classid: String = rs.getString("classid")
println(id + "\t" + name + "\t" + age + "\t" + gender + "\t" + telephone + "\t" + email + "\t" + classid)
}
}
}
}MysqlDemo代碼
import java.sql.Connection
class MysqlDemo {
// 連接數(shù)據(jù)庫 底層原理還是jdbc
//驅(qū)動(dòng)名稱
var driver = "com.mysql.cj.jdbc.Driver"
// 訪問MySQL服務(wù)器,通過3306端口訪問mysql數(shù)據(jù)庫
var url = "jdbc:mysql://192.168.152.184:3306/exam"
//用戶名
var user = "root"
//密碼
var password = "123456"
//輔助構(gòu)造器
def this(driver: String, url: String, user: String, pwd: String) {
this()
this.driver = driver
this.url = url
this.user = user
this.password = pwd
}
}
object MysqlDemo {
// 實(shí)現(xiàn)apply方法
def apply(): MysqlDemo = new MysqlDemo()
def apply(driver: String, url: String, user: String, pwd: String): MysqlDemo = new MysqlDemo(driver, url, user, pwd)
def main(args: Array[String]): Unit = {
//創(chuàng)建對象,調(diào)用apply方法
val demo = MysqlDemo()
//導(dǎo)入MySQLUtil包
import MysqlUtil._
//調(diào)用創(chuàng)建連接的方法
val connection: Connection = demo.conn()
// 調(diào)用釋放資源方法
demo.close(connection)
//添加數(shù)據(jù)方法一
val i: Int = demo.insertStudent
if (i == 1) {
println("添加成功")
} else if (i == 0) {
println("添加失敗")
}
//添加數(shù)據(jù)方法二
val i: Int = demo.insertStudent("aaa", 18, "男", "12345678910", "34649756@qq.com", 1)
if (i == 1) {
println("添加成功")
} else if (i == 0) {
println("添加失敗")
}
//查詢數(shù)據(jù)
demo.selectStudent
// 修改數(shù)據(jù)
val i: Int = demo.updateStudent(22, "test", 25, "女", "123456789", "369852@qq.com", 2)
if (i == 1) {
println("修改成功")
} else if (i == 0) {
println("修改失敗")
}
//刪除數(shù)據(jù)
val i: Int = demo.deleteStudent(21)
if (i == 1) {
println("刪除成功")
} else if (i == 0) {
println("刪除失敗")
}
}
}到此這篇關(guān)于Java Scala實(shí)現(xiàn)數(shù)據(jù)庫增刪查改操作詳解的文章就介紹到這了,更多相關(guān)Java Scala數(shù)據(jù)庫增刪查改內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java并發(fā)編程中的ReentrantLock類詳解
這篇文章主要介紹了Java并發(fā)編程中的ReentrantLock類詳解,ReentrantLock是juc.locks包中的一個(gè)獨(dú)占式可重入鎖,相比synchronized,它可以創(chuàng)建多個(gè)條件等待隊(duì)列,還支持公平/非公平鎖、可中斷、超時(shí)、輪詢等特性,需要的朋友可以參考下2023-12-12
Java中String.split()的最詳細(xì)源碼解讀及注意事項(xiàng)
以前經(jīng)常使用String.split()方法,但是從來沒有注意,下面這篇文章主要給大家介紹了關(guān)于Java中String.split()最詳細(xì)源碼解讀及注意事項(xiàng)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
JAVA核心知識(shí)之ConcurrentHashMap源碼分析
這篇文章主要介紹了JAVA核心知識(shí)之ConcurrentHashMap源碼分析,想了解ConcurrentHashMap的同學(xué)一定要看啊2021-04-04

