一、Druid工具类
package com.jun.jdbc.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;
/**
* Druid工具类
*/
public class JDBCUtilsDruid {
private static DataSource ds;
//在静态代码块完成ds初始化
static {
Properties properties = new Properties();
try {
properties.load(new FileInputStream("src\\druid.properties"));
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
//getConnection方法
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
//关闭连接,在数据库连接池中,colse不是真正的断掉连接,是把Connection对象放回到连接池
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 e) {
throw new RuntimeException(e);
}
}
}
二、Druid工具类测试
package com.jun.jdbc.datasource;
import org.junit.Test;
import java.sql.*;
/**
* 测试Druid工具类
*/
public class JDBCUtilsTest {
@Test
public void selectTest() {
//得到连接
Connection connection = null;
//sql语句
String sql = "select*from actor";
//创建PreparedStatement对象
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = JDBCUtilsDruid.getConnection();
System.out.println(connection.getClass());//运行类型 com.alibaba.druid.pool.DruidPooledConnection
preparedStatement = connection.prepareStatement(sql);
//执行sql语句
resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
Date borndate = resultSet.getDate("borndate");
String phone = resultSet.getString("phone");
System.out.println(id+"\t"+name+"\t"+borndate+"\t"+phone);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//关闭流
JDBCUtilsDruid.close(null, preparedStatement, connection);
}
}
}