十二、Druid(德鲁伊)应用实例十三、基于Druid(德鲁伊)的 JDBCUtils 工具类
1. JDBCUtilsByDruid工具类2. 使用举例
十二、Druid(德鲁伊)应用实例- 加入 Druid jar 包,将该文件拷贝项目的 libs 目录加入 配置文件 druid.properties , 将该文件拷贝项目的 src 目录
#key=value driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/数据库名字?rewriteBatchedStatements=true #url=jdbc:mysql://localhost:3306/数据库名字 username=数据库用户名 password=数据库密码 #initial connection Size initialSize=10 #min idle connecton size minIdle=5 #max active connection size maxActive=20 #max wait time (5000 mil seconds) maxWait=5000
package demo.datasource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.junit.jupiter.api.Test;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Properties;
public class Druid_ {
@Test
public void test01() throws Exception {
//1. 加载配置文件
Properties properties = new Properties();
properties.load(new FileInputStream("src\druid.properties"));
//2. 创建一个指定参数的德鲁伊连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
//测试500000次连接
long s = System.currentTimeMillis();
for (int i = 0; i < 500000; i++) {
Connection connection = dataSource.getConnection();
connection.close();
}
long e = System.currentTimeMillis();
System.out.println("德鲁伊连接池耗时:" + (e - s));
}
}
十三、基于Druid(德鲁伊)的 JDBCUtils 工具类
1. JDBCUtilsByDruid工具类
package demo.datasource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtilsByDruid {
private static DataSource dataSource;
static {
Properties properties = new Properties();
try {
properties.load(new FileInputStream("src\druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
//方法1:获取德鲁伊连接池的“连接”的getConnection 方法
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
//方法2:断开与德鲁伊连接池的"连接"
public static void close(ResultSet resultSet, Statement statement,Connection connection){
try {
if(resultSet != null){
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
2. 使用举例
package demo.datasource;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtilsByDruid_test {
@Test
public void TestSelect(){
//1. 换取连接
Connection connection = null;
//2.组织sql语句
String sql1 = "select * from man";
ResultSet resultSet = null;
PreparedStatement preparedStatement = null;
try {
connection = JDBCUtilsByDruid.getConnection();
preparedStatement = connection.prepareStatement(sql1);
resultSet = preparedStatement.executeQuery(sql1);
while (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println(id + " " + name);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
JDBCUtilsByDruid.close(resultSet,preparedStatement,connection);
}
}
}



