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("数据添加失败");
}
}
}