0、参照c3p0的基本使用
- 参考链接:Java数据库连接池c3p0的基本使用
1、导入jar包
- Github地址:https://github.com/alibaba/druid
- 在Tags中找到相对应的版本,说明中有下载连接,下载jar包导入到工程
 
2、编写配置文件
- 与c3p0不一样的地方是druid可以通过Properties对象来初始化连接池,也就是说配置文件可以随便自定义
- 
配置文件同样需要包含初始化数据库及连接数据库的相关参数,如: driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://example.domain.com:3306/db?useSSL=false username=username password=password initialSize=2 maxActive=10 maxWait=3000
3、创建DataSource对象
public class DruidDemo {
    public static void main(String[] args) throws Exception {
        // 获取Properties文件
        ClassLoader loader = DruidDemo.class.getClassLoader();
        InputStream duridIs = loader.getResourceAsStream("druid.properties");
        Properties props = new Properties();
        props.load(duridIs);
        // 获取DataSource对象,创建Connection对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(props);
        for (int i = 0; i < 10; i++) {
            Connection conn = dataSource.getConnection();
            System.out.println(conn);
        }
    }
}
PS:将数据库连接封装成工具类
package com.yusian.pools;
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 Utils {
    // DataSource
    private static DataSource ds;
    static {
        ClassLoader classLoader = Utils.class.getClassLoader();
        try {
            Properties pro = new Properties();
            pro.load(classLoader.getResourceAsStream("druid.properties"));
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 从连接池获取连接对象
     * @return 连接对象
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        if (ds == null) throw new SQLException("创建连接池失败!");
        return ds.getConnection();
    }
    /**
     * 释放查询类操作的所有资源
     * @param conn 连接对象,归还到连接池
     * @param stmt 查询对象
     * @param retSet 结果对象
     */
    public static void close(Connection conn, Statement stmt, ResultSet retSet) {
        releaseCloseableObject(retSet);
        releaseCloseableObject(stmt);
        releaseCloseableObject(conn);
    }
    /**
     * 释放更新类操作的所有资源
     * @param conn 连接对象
     * @param stmt 查询对象
     */
    public static void close(Connection conn, Statement stmt) {
        close(conn, stmt, null);
    }
    /**
     * 释放AutoCloseable对象资源
     * @param object 需要释放的对象
     */
    public static void releaseCloseableObject(AutoCloseable object) {
        if (object == null) return;
        try {
            object.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Pingback: Spring-jdbc的基本使用 | 年年有"余"