连接池DBCP,高效连接数据库

 使用DBCP实现数据库的连接池

连接池配置,自定义类,最基本四项完整,对于其他配置,自定义

基本四项

  • setDriverClassName 数据库驱动名称
  • setUrl 数据库地址
  • setUsername 用户名
  • setPassword 密码

步骤

  • 导入commons-pool-1.5.6.jar和commons-dbcp-1.4.jar和commons-dbutils-1.6.jar和mysql-connector-java-5.1.37-bin.jar,连接池jar包中,定义好一个类BasicDataSource
  • 写好的工具类
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
public class JDBCUtils{
private static BasicDataSource datasource=new BasicDataSource();//创建出BasicDataSource类对象
//静态代码块,对象BasicDataSource对象中的配置,自定义
static{
//这四句必须有
datasource.setDriverClassName("com.mysql.jdbc.Driver");
datasource.setUrl("jdbc:mysql://localhost:3306/mybase");//这几句代码看不懂的建议去看JDBC技术连接数据库那一篇博客,有解析
datasource.setUsername("root");
datasource.setPassword("123");
//对象连接池中的连接数量配置,可选的
datasource.setInitialSize(10);//初始化的连接数
datasource.setMaxActive(8);//最大连接数量
datasource.setMaxIdle(5);//最大空闲数
datasource.setMinIdle(1);//最小空闲数
}
//定义静态方法,返回BasicDataSource类的对象
public static DataSource getDataSource(){  return datasource;  }

}
  

测试写好的工具类

提供的是一个DataSource接口的数据源,QueryRunner类构造方法,接收DataSource接口的实现类,后面调用update,query,无需传递他们的Connection连接对象

import org.apache.commons.dbutils.QueryRunner;
import cn.itcast.jdbcutils.JDBCUtils;
public class QueryRunnerDemo{
public static void main(string[] args){
insert();
select();
}
//定义两个方法,实现数据表的添加,数据表的查询
//QueryRunner类对象,写在类成员位置
private static QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());
//数据表添加数据
public static void insert{
String sql="INSERT INTO sort (sname,sprice,sdesc) VALUES(?,?,?)";
Object[] params={"水果",100,"滞销"};
try{
int row=qr.update(sql,params);
System.out.println(row);
}
catch(SQLException ex){
//System.out.println(ex);提示错误信息,给程序员看的
throw new RuntimeException("数据添加失败");
}
}
//数据表查询
public static void select(){
String sql="SELECT * FROM sort";
try{
List<Object[]> list=qr.query(sql,new ArraylistHandler());//new ArraylistHandler()是结果集的一种处理方法,这个的详细解释在DBUtils连接数据库里有,建议去看看
for(Object[] objs:list){
for(Object obj:objs){
System.out.print(obj+"\t");
}
System.out.println();
}
}catch(SQLException ex){throw new RuntimeException("数据查询失败");}

}
}
发布了8 篇原创文章 · 获赞 2 · 访问量 438

猜你喜欢

转载自blog.csdn.net/weixin_45704114/article/details/104283775