【JavaWeb】数据库连接池和JDBC封装工具DBUtils
Test/*** 手动设置参数的方式:*/try{// 获得连接:从连接池中获取:// 创建连接池:// 设置连接参数:// 从连接池中获得连接:// 编写SQL:// 预编译SQL:// 执行SQL:}}}因为JDBC手写比较麻烦,而且有非常多的代码是类似的。比如获得连接,预编译SQL,释放资源等..那么可以将这些代码抽取出来放到工具类中。将类似的代码进行抽取。大大简化JDBC的编程。
目录
8.DBUtils的使用之ResultSetHandler的实现类
1.ArrayHandler和ArrayListHandler
4.ColumnListHandler、ScalarHandler
一、Druid开源连接池的使用
Druid阿里旗下开源连接池产品,使用非常简单,可以与Spring框架进行快速整合。
1.Druid的使用
@Test
/**
* Druid的使用:
* * 手动设置参数的方式
*/
public void demo1(){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
// 使用连接池:
DruidDataSource dataSource = new DruidDataSource();
// 手动设置数据库连接的参数:
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///web_test4");
dataSource.setUsername("root");
dataSource.setPassword("abc");
// 获得连接:
// conn = JDBCUtils.getConnection();
conn = dataSource.getConnection();
// 编写SQL:
String sql = "select * from account";
// 预编译SQL:
pstmt = conn.prepareStatement(sql);
// 设置参数:
// 执行SQL:
rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtils.release(rs, pstmt, conn);
}
}
2.使用配置方式完成连接池的使用
@Test
/**
* Druid的使用:
* * 配置方式设置参数
* Druid配置方式可以使用属性文件配置的。
* * 文件名称没有规定但是属性文件中的key要一定的。
*/
public void demo2(){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
// 使用连接池:
// 从属性文件中获取:
Properties properties = new Properties();
properties.load(new FileInputStream("src/druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
// 获得连接:
// conn = JDBCUtils.getConnection();
conn = dataSource.getConnection();
// 编写SQL:
String sql = "select * from account";
// 预编译SQL:
pstmt = conn.prepareStatement(sql);
// 设置参数:
// 执行SQL:
rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtils.release(rs, pstmt, conn);
}
}
二、C3P0开源连接池的使用
1.C3P0的连接池的概述
2.C3P0的连接池的使用
2.1手动设置参数的方式
@Test
/**
* 手动设置参数的方式:
*/
public void demo1(){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
// 获得连接:从连接池中获取:
// 创建连接池:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 设置连接参数:
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql:///web_test4");
dataSource.setUser("root");
dataSource.setPassword("abc");
// 从连接池中获得连接:
conn = dataSource.getConnection();
// 编写SQL:
String sql = "select * from account";
// 预编译SQL:
pstmt = conn.prepareStatement(sql);
// 执行SQL:
rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtils.release(rs, pstmt, conn);
}
}
2.2采用配置文件的方式:
2.2.1配置连接池:
2.2.2使用连接池
@Test
/**
* 采用配置文件的方式:
*/
public void demo2(){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
// 获得连接:从连接池中获取:
// 创建连接池://创建连接池默认去类路径下查找c3p0-config.xml
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 从连接池中获得连接:
conn = dataSource.getConnection();
// 编写SQL:
String sql = "select * from account";
// 预编译SQL:
pstmt = conn.prepareStatement(sql);
// 执行SQL:
rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtils.release(rs, pstmt, conn);
}
}
三、DBUtils的概述
1.什么是DBUtils
2.为什么要学习DBUtils
因为JDBC手写比较麻烦,而且有非常多的代码是类似的。比如获得连接,预编译SQL,释放资源等..那么可以将这些代码抽取出来放到工具类中。将类似的代码进行抽取。大大简化JDBC的编程。
3.DBUtils的API
3.1QueryRunner对象:核心运行类
构造方法:
方法:
在一般情况下如果执行CRUD的操作:
构造:
QueryRunner(DataSource ds);
方法:
int update(String sql,Object… args);
T query(String sql,ResultSetHandler rsh,Object… args);
如果有事务管理的话使用另一套完成CRUD的操作:
构造:
QueryRunner();
方法:
int update(Connection conn,String sql,Object… args);
T query(Connection conn,String sql,ResultSetHandler rsh,Object… args);
方法:
3.2DbUtils
4.DBUtils的添加操作
@Test
/**
* 添加操作
*/
public void demo1() throws SQLException{
// 创建核心类:QueryRunner:
QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
queryRunner.update("insert into account values (null,?,?)", "ddd",10000);
}
5.DBUtils的修改操作
@Test
/**
* 修改操作
*/
public void demo2() throws SQLException{
// 创建核心类:
QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
queryRunner.update("update account set name=?,money=? where id =?", "eee",20000,4);
}
6.DBUtils的删除操作
@Test
/**
* 删除操作
*/
public void demo3() throws SQLException{
// 创建核心类:
QueryRunner queryRunner = new QueryRunner(JDBCUtils2.getDataSource());
queryRunner.update("delete from account where id = ?", 3);
}
7.DBUtils的使用之查询的操作
7.1查询一条记录
创建一个对象:Account
查询代码实现:
7.2查询多条记录:
8.DBUtils的使用之ResultSetHandler的实现类
1.ArrayHandler和ArrayListHandler
ArrayHandler:
将一条记录封装到一个数组当中。这个数组应该是Object[]。
ArrayListHandler:
将多条记录封装到一个装有Object[]的List集合中。
2.BeanHandler和BeanListHandler
BeanHandler:
BeanListHandler:
将多条记录封装到一个装有JavaBean的List集合中。
3.MapHandler和MapListHandler
MapHandler:
将一条记录封装到一个Map集合中,Map的key是列名,Map的value就是表中列的记录值。
MapListHandler:
将多条记录封装到一个装有Map的List集合中。
4.ColumnListHandler、ScalarHandler
ColumnListHandler:
将数据中的某列封装到List集合中。
ScalarHandler:
将单个值封装。
更多推荐
所有评论(0)