Java数据库连接池Druid的基本使用

0、参照c3p0的基本使用

1、导入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();
        }
    }
}

One thought on “Java数据库连接池Druid的基本使用

  1. Pingback: Spring-jdbc的基本使用 | 年年有"余"

Leave a Reply