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

最近在做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;
    }
}

猜你喜欢

转载自blog.csdn.net/wzy18210825916/article/details/88655633