1. 程式人生 > >利用c3p0的QueryRunner類封裝資料庫操作類

利用c3p0的QueryRunner類封裝資料庫操作類

文章目錄

前言

鑑於最近做一個小專案,想要自己封裝資料庫操作類,但是網上的各種部落格資料都是很簡單的操作,基本都是寫死的,每次呼叫都要修改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. 小結

對於一個新手菜雞來說,折騰了整整一天,不過最後弄出來,還是蠻開心的,哈哈。