MySQL数据库基础-Druid连接池基础使用

Druid连接池基础使用

 建立数据库连接耗时耗费资源,一个数据库服务器能够同时建立的连接数也是有限的,在大型的Web应用中,可能同时会有成百上千的访问数据库的请求,如果Web应用程序为每一个客户请求分配一个数据库连接,将导致性能的急剧下降。

 数据库连接池的意义在于,能够重复利用数据库连接(有点类似线程池的部分意义),提高对请求的响应时间和服务器的性能。
连接池中提前预先建立了多个数据库连接对象,然后将连接对象保存到连接池中,当客户请求到来时,直接从池中取出一个连接对象为客户服务,当请求完成之后,客户程序调用close()方法,将连接对象放回池中。

 druid为阿里巴巴的数据源,(数据库连接池),集合了c3p0、dbcp、proxool等连接池的优点,还加入了日志监控,有效的监控DB池连接和SQL的执行情况。
DRUID的DataSource类为:com.alibaba.druid.pool.DruidDataSource。

import JDBCdemo1.JDBCUtils;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

/*
开源连接池Druid的使用
 */
public class demo01 {
    /*
    Druid的使用:
        手动设置参数
     */
    public static void main1(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {
            //使用连接池
            DruidDataSource dataSource = new DruidDataSource();
            //手动设置参数
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql://192.168.4.192:3306/wdp-database");
            dataSource.setUsername("root");
            dataSource.setPassword("root");
            //获得连接
            conn = dataSource.getConnection();
            //获得连接
            //conn = JDBCUtils.getConnection();
            //编写SQL
            String sql = "Select * from student";
            //预编译sql
            pstmt = conn.prepareStatement(sql);
            //设置参数
            //执行sql
            rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getInt("id") + " " + rs.getString("name") + " " + rs.getString("sex"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(rs, pstmt, conn);
        }
    }

    /*
    Druid的使用:
        配置方式设置参数

    Druid配置方式可以使用属性文件配置
        文件名称没有规定但是属性文件中的key要一定

     */
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {
            //使用连接池

            //从属性文件中获取
            Properties properties = new Properties();
            properties.load(new FileInputStream("src/db.properties"));
            DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
            //获得连接
            //conn = JDBCUtils.getConnection();
            conn = dataSource.getConnection();
            //编写SQL
            String sql = "Select * from student";
            //预编译sql
            pstmt = conn.prepareStatement(sql);
            //设置参数
            //执行sql
            rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getInt("id") + " " + rs.getString("name") + " " + rs.getString("sex"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(rs, pstmt, conn);
        }
    }
}

配置文件:db.properties

driverClassName = com.mysql.jdbc.Driver
url = jdbc:mysql://192.168.4.192:3306/wdp-database
username=root
password= root

#<!-- 初始化连接 -->
initialSize=10

#最大连接数量
maxActive=50

#<!-- 最大空闲连接 -->
maxIdle=20

#<!-- 最小空闲连接 -->
minIdle=5

#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60-->
maxWait=60000
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页