BenjaminYang In solitude, where we are least alone

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

 

posted @ 2018-06-06 12:25  benjamin杨  阅读(1050)  评论(0编辑  收藏  举报