JDBC操作数据库—工具类封装

更新时间:2019-03-21 09:43:43 点击次数:1300次
最近在做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;
    }
}
 

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

回到顶部
嘿,我来帮您!