最近在做ETL的時候,用到了傳統的JDBC,對某些模塊做了一些封裝,這里做一下記錄。
大家拿回去用的話,直接copy過去,改一下DataConf就行了,這就是封裝的魅力!
1、數據庫配置類——DataConf
package com.bq.data.kmx.conf;
public class DataConf {
public static final String DRIVER="org.postgresql.Driver";
public static final String URL="jdbc:postgresql://*.*.*.*:5432/數據庫名稱?rewriteBatchedStatements=true";
public static final String USERNAME="postgres";
public static final String PASSWORD="123456";
}
2、數據庫管理類——DataBaseManager
package com.bq.data.kmx.manager;
import com.bq.data.kmx.conf.DataConf;
import java.sql.*;
public class DataBaseManager {
/**
* 靜態塊,加載數據庫連接驅動
* */
static {
try {
Class.forName(DataConf.DRIVER);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 返回一個數據庫連接
* */
public static Connection getConnection(){
Connection connection=null;
try {
connection= DriverManager.getConnection(DataConf.URL,DataConf.USERNAME,DataConf.PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/**
* 關閉數據庫資源
* */
public static void close(Connection connection, Statement statement,ResultSet resultSet){
try {
if (connection!=null){
connection.close();
}
if (statement!=null){
statement.close();
}
if (resultSet!=null){
resultSet.close();
}
}catch (SQLException e){
e.printStackTrace();
}
}
}
3、數據庫操作工具類——DataBaseUtil
package com.bq.data.kmx.util;
import com.bq.data.kmx.manager.DataBaseManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DataBaseUtil {
//數據庫連接對象
private Connection connection;
/**
* 構造函數,傳入一個Connection連接
* */
public DataBaseUtil(Connection connection){
this.connection=connection;
}
public DataBaseUtil(){}
/** 執行增刪改的方法
* @param sql SQL語句
* @param params 參數
* @return 受影響的行數
* */
public int exceute(String sql,Object[] params) throws SQLException {
int result=0;
PreparedStatement statement=null;
try {
statement=connection.prepareCall(sql);
//遍歷參數數組,為預編譯的SQL語句綁定參數
if (params!=null){
if (params.length!=0){
for (int i = 0; i <params.length ; i++) {
statement.setObject(i+1,params[i]);
}
}
}
//執行SQL語句
result=statement.executeUpdate();
}catch (SQLException e){
throw new SQLException(e);
}finally {
DataBaseManager.close(null,statement,null);
}
return result;
}
/**
* 用于批處理,為PreparedStatement對象設置SQL參數
* */
public static void setParams(Object[] params,PreparedStatement statement) throws SQLException {
//遍歷參數數組,為預編譯的SQL語句綁定參數
if (params!=null){
if (params.length!=0){
for (int i = 0; i <params.length ; i++) {
statement.setObject(i+1,params[i]);
}
}
}
}
/**
* 查詢結果集
* */
public ResultSet select(PreparedStatement preparedStatement){
ResultSet resultSet=null;
try {
resultSet=preparedStatement.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return resultSet;
}
}
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。