JDBC学习笔记(7)——数据库连接池
1.概述
2.Druid数据库连接池技术
在JDBCUtils工具类中添加如下代码实现获取数据库连接
//使用Druid数据库连接池技术
private static DataSource source;
static {
try {
InputStream rs = ClassLoader.getSystemClassLoader().getResourceAsStream("Druid.properties");
Properties properties = new Properties();
properties.load(rs);
source = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws Exception {
Connection connection = source.getConnection();
return connection;
}
3.DBUtils实现CRUD操作
//实现插入操作
@Test
public void testInsert() {
Connection connection = null;
try {
QueryRunner runner = new QueryRunner();
connection = JDBCUtils.getConnection();
String sql = "insert into customers(name,email,birth)values(?,?,?)";
int insertCount = runner.update(connection, sql, "caixukun", "caixukun@126.com", "1694-4-12");
System.out.println("添加了" + insertCount + "条记录");
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.closeResource(connection, null);
}
}
//实现查询操作
//BeanHandler:是ResultSetHandler接口的实现类,用于封装表中的一条记录
@Test
public void testQuery1() {
Connection conn = null;
try {
QueryRunner runner = new QueryRunner();
conn = JDBCUtils.getConnection();
String sql = "select * from customers where id = ?";
BeanHandler<Customer> handler = new BeanHandler<Customer>(Customer.class);
Customer query = runner.query(conn, sql, handler, 16);
System.out.println(query);
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.closeResource(conn,null);
}
}
//BeanListhandler:是ResultSetHandler接口的实现类,用于封装表中的多条记录构成的集合
@Test
public void testQuery2() {
Connection conn = null;
try {
QueryRunner runner = new QueryRunner();
conn = JDBCUtils.getConnection();
String sql = "select * from customers where id < ?";
BeanListHandler<Customer> handler = new BeanListHandler<Customer>(Customer.class);
List<Customer> query = runner.query(conn, sql, handler, 16);
System.out.println(query);
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCUtils.closeResource(conn,null);
}
}
//ScalarHandler:用于查询特殊值
4.DbUtils关闭资源
public static void closeResource1(Connection connection, Statement statement,ResultSet resultSet){
/* try {
DbUtils.close(connection);
} catch (SQLException e) {
e.printStackTrace();
}
try {
DbUtils.close(statement);
} catch (SQLException e) {
e.printStackTrace();
}
try {
DbUtils.close(resultSet);
} catch (SQLException e) {
e.printStackTrace();
}*/
DbUtils.closeQuietly(connection);
DbUtils.closeQuietly(statement);
DbUtils.closeQuietly(resultSet);
}