Druid连接池的使用讲解

  • 什么是连接池以及作用?

     

Druid连接池是阿里巴巴开源的数据库连接池项目,后面贡献给Apache开源。Druid的作用是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。

SQL脚本环境:

CREATE TABLE tuser(
 id int(10) PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(30) NOT NULL,
 jobs VARCHAR(30) NOT NULL,
 phone VARCHAR(30) NOT NULL
);
INSERT INTO `tuser`(`name`,jobs,phone) VALUES('Sunny','IT','027-57998');

1.测试需要两个架包分别是Druid和MySQL的连接驱动,网上下载即可

2.建一个druid的配置文件

url=jdbc:mysql:///vdemo
driverClassName=com.mysql.cj.jdbc.Driver
username=root
password=123456

##初始连接数,默认0
initialSize=10
#最大连接数,默认8
maxActive=30
#最小闲置数
minIdle=10
#获取连接的最大等待时间,单位毫秒
maxWait=2000
#缓存PreparedStatement,默认false
poolPreparedStatements=true
#缓存PreparedStatement的最大数量,默认-1(不缓存)
#大于0时会自动开启缓存PreparedStatement,所以可以省略上一句设置
maxOpenPreparedStatements=20

3.写测试代码

import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class DruidExample {
    public static void main(String[] args) throws Exception {
        Properties properties=new Properties();
        //通过当前类的class对象获取资源文件
        InputStream is = DruidExample.class.getResourceAsStream("/druid.properties");
        properties.load(is);
        DataSource druidDataSource = DruidDataSourceFactory.createDataSource(properties);
        Connection connection = druidDataSource.getConnection();
        String SQL = "SELECT * FROM tuser WHERE id = ? ";
        PreparedStatement preparedStatement = connection.prepareStatement(SQL);
        preparedStatement.setInt(1,1);
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            String job = resultSet.getString("jobs");
            String phone = resultSet.getString("phone");
            System.out.println("用户Id为:"+id);
            System.out.println("用户姓名为:"+name);
            System.out.println("用户工作为:"+job);
            System.out.println("用户电话为:"+phone);
            }
    }
}

测试查询结果:

你可能感兴趣的:(mysql)