最近在做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;
}
}
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。