Druid连接池+工具类

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:20   4324   0
package Test02;

import JDBCUtils.JDBCUtils;
import org.junit.Test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test01 {
    @Test
    public void m() throws SQLException {
        Connection conn = JDBCUtils.getConnection();
        PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp");
        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {
            System.out.println(rs.getInt("id") + " " + rs.getString("ename") + " " + rs.getDouble("sal") + " " + rs.getDate("birth"));
        }
    }
    conn.close();//将连接归还给池
}
/*
        运用工具类的Druid





        两个连接池大同小异,都是将连接参数优化为配置文件,相比之下,druid更加自由
 */

================================分割线====================================

工具类:JDBCUtils

package JDBCUtils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtils {

    private static DataSource dataSource = null;

    static {
        try {
            Properties p = new Properties();
            p.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            DruidDataSourceFactory druidDataSourceFactory = new DruidDataSourceFactory();
            dataSource = druidDataSourceFactory.createDataSource(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    public static void close(Connection connection, Statement statement, ResultSet resultSet) {
        // 代码的严谨性
        try {
            if (resultSet != null) {
                resultSet.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            if (statement != null) {
                statement.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            if (connection != null) {
                connection.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
/*


                工具类将属性文件的加载,datasouce的创建,资源的归还,注意由连接池创建的连接,close时是归还,而不是关闭!
 */
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP