数据库连接池Druid工具类代码实现

 

 Druid:数据库连接池实现技术,由阿里巴巴提供的
        1. 步骤:
            1. 导入jar包 druid-1.0.9.jar
            2. 定义配置文件:
                * 是properties形式的
                * 可以叫任意名称,可以放在任意目录下
            3. 加载配置文件。Properties
            4. 获取数据库连接池对象:通过工厂来来获取  DruidDataSourceFactory
            5. 获取连接:getConnection
        * 代码:
             //3.加载配置文件
            Properties pro = new Properties();
            InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);
            //4.获取连接池对象
            DataSource ds = DruidDataSourceFactory.createDataSource(pro);
            //5.获取连接
            Connection conn = ds.getConnection();
        2. 定义工具类
            1. 定义一个类 JDBCUtils
            2. 提供静态代码块加载配置文件,初始化连接池对象
            3. 提供方法
                1. 获取连接方法:通过数据库连接池获取连接
                2. 释放资源
                3. 获取连接池的方法

Druid.properties配置文件:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/ccc
username=root
password=110505

# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

工具类代码实现:

package com.itheima_02.datasource.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

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

/*
   Druid连接池工具类
 */
public class JDBCUtils {
    //定义成员变量
    private  static DataSource ds;
    //静态代码块
    static {

        try {
            //加载配置文件
            Properties prop = new Properties();
            prop.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            //获取数据库连接池DataSource
            ds = DruidDataSourceFactory.createDataSource(prop);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接
     * @return 连接对象
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }

    /**
     * 关闭DML(增删改)资源
     * @param stmt  释放执行sql语句的对象 Statement
     * @param conn  释放数据库连接对象 Connection
     */
    public static void close(Statement stmt,Connection conn){
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close(); //归还连接到连接池
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 关闭DQL(查询语句)资源
     * @param rs 释放结果集对象 ResultSet
     * @param stmt 释放执行SQL语句对象 Statement
     * @param conn 释放数据库连接对象 Connection
     */
    public static void close(ResultSet rs,Statement stmt, Connection conn){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close(); //归还连接到连接池
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /*
     *   获取连接池的方法		   
    */
    public static DataSource getDataSource(){
        return ds;
    }
}

 

你可能感兴趣的:(数据库)