JDBC工具类

Posted 编程老高

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC工具类相关的知识,希望对你有一定的参考价值。

IRowMapper接口:

package com.jd.util.db;

import java.sql.ResultSet;

@FunctionalInterface
public interface IRowMapper{
    void mapRow(ResultSet resultSet);
}

PropertiesUtil类:

package com.jd.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertiesUtil {

    private static Properties properties = new Properties();

    static{
        InputStream inputStream = PropertiesUtil.class.getClassLoader().getResourceAsStream("db.properties");
        try {
            properties.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String value(String key) {
        return properties.getProperty(key);
    }
}

DBUtil类:

package com.jd.util.db;

import com.jd.util.PropertiesUtil;

import java.sql.*;

public class DBUtil {

    static{
        //1、加载驱动类
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取MySQL连接
     *
     * @author GaoHuanjie
     */
    private static Connection getConnection() throws SQLException {
        String url = PropertiesUtil.value("url");
        String userName=PropertiesUtil.value("userName");
        String password=PropertiesUtil.value("password");
        return DriverManager.getConnection(url,userName,password);
    }

    public static boolean exist(String sql){
        Connection connection =null;
        Statement statement =null;
        ResultSet resultSet =null;
        try {
            //2、获取连接
            connection = getConnection();
            //3、创建语句
            statement = connection.createStatement();
            //4、执行SQL
            resultSet = statement.executeQuery(sql);
            //5、处理结果
            return resultSet.next();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //6、释放资源
            close(resultSet,statement,connection);
        }
        return false;
    }

    public static boolean exist(String sql,Object...params){
        Connection connection =null;
        PreparedStatement preparedStatement =null;
        ResultSet resultSet =null;
        try {
            //2、获取连接
            connection = getConnection();
            //3、创建语句,预编译
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                preparedStatement.setObject(i+1,params[i]);
            }
            //4、执行SQL
            resultSet = preparedStatement.executeQuery();
            //5、处理结果
            return resultSet.next();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //6、释放资源
            close(resultSet,preparedStatement,connection);
        }
        return false;
    }

    public static void select(String sql,IRowMapper rowMapper){
        Connection connection =null;
        Statement statement =null;
        ResultSet resultSet =null;
        try {
            //2、获取MySQL连接
            connection = getConnection();
            //3、创建语句
            statement = connection.createStatement();
            //4、执行SQL语句
            resultSet = statement.executeQuery(sql);
            //5、处理结果
            rowMapper.mapRow(resultSet);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            //6、释放资源
            close(resultSet,statement,connection);
        }
    }

    public static void select(String sql,IRowMapper rowMapper,Object...params){
        Connection connection =null;
        PreparedStatement preparedStatement =null;
        ResultSet resultSet =null;
        try {
            //2、获取连接
            connection = getConnection();
            //3、创建语句,预编译
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                preparedStatement.setObject((i+1),params[i]);
            }
            //4、执行SQL
            resultSet = preparedStatement.executeQuery();
            //5、处理结果
            rowMapper.mapRow(resultSet);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //6、释放资源
            close(resultSet,preparedStatement,connection);
        }
    }

    public static boolean update(String sql){
        Connection connection =null;
        Statement statement =null;
        try {
            //2、连接MySQL数据库
            connection = getConnection();
            //3、创建SQL语句
            statement = connection.createStatement();
            //4、执行SQL
            int effect = statement.executeUpdate(sql);
            //5、处理结果
            return effect>0;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }  finally {
            //6、释放资源
            close(statement,connection);
        }
        return false;
    }

    public static boolean update(String sql,Object...params){
        Connection connection =null;
        PreparedStatement preparedStatement =null;
        try {
            //2、连接MySQL数据库
            connection = getConnection();
            //3、创建SQL语句
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                preparedStatement.setObject(i+1,params[i]);
            }
            //4、执行SQL
            int effect = preparedStatement.executeUpdate();
            //5、处理结果
            return effect>0;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }  finally {
            //6、释放资源
            close(preparedStatement,connection);
        }
        return false;
    }

    private static void close(Statement statement,Connection connection){
        if(statement != null) {
            try {
                statement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(connection != null) {
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }

    private static void close(ResultSet resultSet,Statement statement,Connection connection){
        if(resultSet!=null) {
            try {
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        close(statement,connection);
    }
}

 

以上是关于JDBC工具类的主要内容,如果未能解决你的问题,请参考以下文章

JDBC工具类连接数据库,模仿登录

JDBC工具类

开源JDBC工具类DbUtils

一个JDBC封装工具类

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

部分代码片段