java使用DBCP连接池创建工具类
1.说明
java中有个扩展包 javax下面有个DataResource的接口 javax.sql.DataResource
该接口定义了连接池的方法规范
而DBCP框架有apache公司开发,他实现了接口DataResource定义的方法
他的实现类是BasicDataResorce org.apache.commons.dbcp.BasicDataSource;
2.写定义连接池的类
package demo; /* * 使用DBCP实现数据库的连接池 * 连接池配置,自定义类, * 最基本四项完整 * 对于数据库连接池其他四项,自定义 */ import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; //DataSource的实现类 public class JDBCUtils{ //创建出BasicDataSource类对象 private static BasicDataSource datasource=new BasicDataSource(); //静态代码库,对象BasicDataSource对象中的配置,自定义 static{ //数据库连接信息,必须的 datasource.setDriverClassName("com.mysql.jdbc.Driver"); datasource.setUrl("jdbc:mysql://localhost:3306/mybase"); datasource.setUsername("root"); datasource.setPassword("123456"); //设置连接池中的连接数量配置,可选的配置项 datasource.setInitialSize(10);//初始化的连接数 datasource.setMaxActive(8);//最大连接数 datasource.setMaxIdle(5);//最大空闲数 datasource.setMinIdle(1);//最小空闲数 } //定义静态方法,返回BasicDataSource类的对象 public static DataSource getDataSource(){ return datasource; } }
3.结合 dbutils框架下的QueryRunner方法 实现数据库的操作
package demo; /* * 测试写好的工具类, * 提供的是一个DataSource接口的数据源 * QueryRunner类构造方法,接受DataSource接口的实现类 * 后面,调用方法update,query,无需传递他们Connection链接对象 */ import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayListHandler; import demo.JDBCUtils; public class QueryRunnerDemo{ public static void main(String[] args) { //insert(); select(); } //定义2个方法,实现数据表的添加,数据表查询 //QueyRunnner类对象,卸载类成员位置 private static QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource()); //数据表查询 public static void select(){ String sql="select * from sort"; try{ List<Object[]> list=qr.query(sql, new ArrayListHandler()); for(Object[] objs:list){ for(Object obj:objs){ System.out.print(obj+"\t"); } System.out.println(); } }catch (SQLException e){ e.printStackTrace(); throw new RuntimeException("查询数据失败"); } } //数据表添加数据 public static void insert() { String sql="insert into sort (sname,sprice,sdesc) values (?,?,?)"; Object[] params={"水果",100.12,"刚刚上市的核桃"}; try{ int num=qr.update(sql,params); System.out.println(num); }catch(SQLException e){ e.printStackTrace(); throw new RuntimeException("数据添加失败"); } } }