JDBC-Druid(MySQL)数据库连接池

  • Post author:
  • Post category:mysql


1、导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.15</version>
</dependency>

2、resources下新建druid.properties配置文件

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=false
username=root
password=123456

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

3、DruidUtil工具类

import com.alibaba.druid.pool.DruidDataSourceFactory;

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

public class DruidUtil {
    
    //定义成员变量 DataSource dataSource
    private static DataSource dataSource;

    static {
        Properties properties = new Properties();
        InputStream inputStream = null;
        try {
            inputStream = DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");
            properties.load(inputStream);
            dataSource= DruidDataSourceFactory.createDataSource(properties);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    // 获取DataSource对象,给JDBCTemplate提供
    public static DataSource getDataSource(){
        return  dataSource;
    }
    
    // 获得连接
    public static Connection getConnection(){
        Connection connection = null;
        try {
            connection = dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return  connection;
    }
    
    // 关闭资源
    public static void closeAll(ResultSet resultSet, Statement statement, Connection connection){
        try {
            if(resultSet != null){
                resultSet.close();
                // 赋值null,gc垃圾回收机制会优先处理
                resultSet =null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(statement != null){
                statement.close();
                statement=null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(connection != null){
                connection.close();
                connection = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    public static void close(Statement statement,Connection connection){
        try {
            if(statement != null){
                statement.close();
                statement=null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(connection != null){
                connection.close();
                connection = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

4、测试

public class Test {
    @Test
    public void test() {
        Connection conn = DruidUtil.getConnection();
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
        	String testSql = "select id,name from user;";
            pstmt = conn.prepareStatement(testSql);
            rs = pstmt.executeQuery();
            while (rs.next()) {
            	int id = rs.getInt("id");
                String name = rs.getString("name");
                
                System.out.println(id + ":" + name);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DruidUtil.closeAll(rs, pstmt, conn);
        }
 
    }
}



版权声明:本文为yang2717原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。