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);
}
}
}