zoukankan      html  css  js  c++  java
  • 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+"	");
                }
                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("数据添加失败");
            }
        }
    }
  • 相关阅读:
    nodejs初期,搭建一个登陆注册功能,(原生的)
    关于vue如何创建一个自定义组件(这是项目中经常得用的)
    关于vue 使用watch方法,详解。
    怎样用Nodejs搭建一个服务器
    关于Promise的理解及运用
    Ado.NET SQLHelper(2)
    Ado.NET SQLHelper
    MS SQLSERVER 自增ID列竟然会重复
    SQL中Left Join 与Right Join 与 Inner Join 与 Full Join的区别
    thread.start和threadstart.invoke的区别
  • 原文地址:https://www.cnblogs.com/benjamin77/p/9144487.html
Copyright © 2011-2022 走看看