利用c3p0的QueryRunner類封裝資料庫操作類
阿新 • • 發佈:2018-11-06
文章目錄
前言
鑑於最近做一個小專案,想要自己封裝資料庫操作類,但是網上的各種部落格資料都是很簡單的操作,基本都是寫死的,每次呼叫都要修改MySQL語句,確實很麻煩,通過我自己查閱部落格或資料,利用c3p0的QueryRunner類封裝資料庫操作類,能簡單的進行資料庫JDBC操作。
歡迎收藏米奇羅自己的部落格
1. 準備
下載的包均是此時最新包
2. 封裝資料庫連線
貼出原始碼:
package com.maolin.Utils;
import java.sql.*;
public class JDBCUtil {
private static String USERNAME = "root";
private static String PASSWORD = "rootroot";
/**
* 獲取連線
* @return
*/
public static Connection getConnection (){
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/bigtest?useSSL=true&serverTimezone=GMT";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn= DriverManager.getConnection(url,USERNAME,PASSWORD);
}catch (Exception e) {
System. out.println("DBUtils.getConnection---獲取連線失敗!");
e.printStackTrace();
}
return conn;
}
}
3. 使用QueryRunner類,實現對資料表的 insert delete update
貼出程式碼:
package com.maolin.Utils;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
/**
* 未使用連線池
* 使用QueryRunner類,實現對資料表的insert delete update
* 呼叫QueryRunner類的方法 update (Connection con,String sql,Object...param)
* 資料庫連線物件,自定義的工具類傳遞
*/
public class QueryRunnerUtil {
private static Connection con = JDBCUtil.getConnection();
/**
* 測試主函式
*/
public static void main(String[] args) throws SQLException {
String tableName = "items";
String[] fields = {"user_", "date_"};
String[] values = {"張三", "2018-01-01"};
dataUpdate(tableName, fields, values, "user_", "張三");
}
/* public static void main(String[] args) throws SQLException {
String tableName = "items";
dataDelete(tableName,"user_", "張三");
}*/
/* public static void main(String[] args) throws SQLException {
String tableName = "items";
String[] fields = {"user_", "date_","situation"};
String[] values = {"張三", "2018-01-01","清華"};
dataInsert(tableName, fields, values);
}*/
/**
*tableName:資料表名稱
* fields:欄位,為陣列; values:欄位對應的值,為字串陣列
*/
public static void dataInsert(String tableName, String[] fields, Object[] values) throws SQLException {
// Object[] values1= values;
//建立QueryRunner類物件
int row = 0;
String sql = null;
QueryRunner qr = new QueryRunner();
String params = String.join(",", fields);
switch (fields.length) {
case 2:
sql = "INSERT INTO " + tableName + " (" + params + ") VALUES (?,?)";
row = qr.update(con, sql, values);
break;
case 3:
sql = "INSERT INTO " + tableName + " (" + params + ") VALUES (?,?,?)";
row = qr.update(con, sql, values);
break;
case 4:
sql = "INSERT INTO " + tableName + " (" + params + ") VALUES (?,?,?,?)";
row = qr.update(con, sql, values);
break;
case 5:
sql = "INSERT INTO " + tableName + " (" + params + ") VALUES (?,?,?,?,?)";
row = qr.update(con, sql, values);
default:
System.out.println("default");
break;
}
if (row > 0) {
System.out.println("Success");
} else {
System.out.println("Failed");
}
DbUtils.closeQuietly(con);
}
/**
*tableName:資料表名稱
* key:欄位關鍵字; keyword:欄位對應的值
*/
public static void dataDelete(String tableName, String key, String keyword) throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "DELETE FROM " + tableName + " WHERE " + key + " = ?";
int row = qr.update(con, sql, keyword);
if (row > 0) {
System.out.println("Success");
} else {
System.out.println("Failed");
}
DbUtils.closeQuietly(con);
}
/**
*tableName:資料表名稱
* fields:欄位,為陣列; values:欄位對應的值
* key:欄位關鍵字; keyword:欄位對應的值
*/
public static void dataUpdate(String tableName, String[] fields, Object[] values, String key, String keyword) throws SQLException {
QueryRunner qr = new QueryRunner();
StringBuffer sb = new StringBuffer();
for (int x = 0; x < fields.length; x++) {
if (x < fields.length - 1)
sb.append(fields[x]).append("=?,");
else
sb.append(fields[x]).append("=?");
}
String params = sb.toString();
String sql = "UPDATE " + tableName + " SET " + params + " WHERE " + key + " = '" + keyword+"'";
int row = qr.update(con, sql, values);
if (row > 0) {
System.out.println("Success");
} else {
System.out.println("Failed");
}
DbUtils.closeQuietly(con);
}
}
4. 小結
對於一個新手菜雞來說,折騰了整整一天,不過最後弄出來,還是蠻開心的,哈哈。