java JDBC (八) 连接池 DBCP

package cn.sasa.demo1;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSource;

public class DBUtils {
    private static BasicDataSource datasource = new BasicDataSource();
    
    static {
        /**
         * 连接池:
         * 存放连接的容器
         * 不需要每次都创建连接、释放连接
         * 
         * DataSource接口
         * java为数据库连接池提供的公共接口:javax.sql.DataSource
         * 常用的连接池: DBCP C3P0
         * 
         * 导入jar包
         * DBCP连接池:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
         * Commons Pool:http://commons.apache.org/proper/commons-pool/download_pool.cgi
         * DBCP依赖于Pool
         * 只导入上面两个包运行如下代码会报错:java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
         * 还需导入包commons-logging:http://commons.apache.org/proper/commons-logging/download_logging.cgi
         */
        //数据库连接信息,必须
        datasource.setDriverClassName(DBProperties.driver);
        datasource.setUrl(DBProperties.url);
        datasource.setUsername(DBProperties.user);
        datasource.setPassword(DBProperties.pwd);
        //连接池的配置,可选信息
        datasource.setInitialSize(10);//初始化的连接数
        //....
    }
    
    public static DataSource getDataSource() {
        return datasource;
    }    
}

 

package cn.sasa.demo1;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

public class ConnectionPoolDemo {
    static QueryRunner query = new QueryRunner(DBUtils.getDataSource());
    public static void main(String[] args) {
        select();
    }
    static void select() {
        String sql = "SELECT * FROM product";
        try {
            List<Product> plist = query.query(sql, new BeanListHandler<Product>(Product.class));
            for(Product product : plist) {
                System.out.print(product.getPname()+"="+product.getPrice()+"\t");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

package cn.sasa.demo1;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class DBProperties {
    public static String driver = "";
    public static String url = "";
    public static String user = "";
    public static String pwd = "";
    
    static {
        try {
            InputStream input = DBProperties.class.getClassLoader().getResourceAsStream("database.properties");
            Properties properties = new Properties();
            properties.load(input);
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            pwd = properties.getProperty("pwd");
        }catch(IOException ex){
//            ex.printStackTrace();
            throw new RuntimeException("数据库信息获取失败");
        }
    }
}

 

package cn.sasa.demo1;

public class Product {
    private int pid;
    private String pname;
    private double price;
    private String ptype;
    private String create_tm;
    
    public Product() {}
    public Product(int pid, String pname,double price,
            String ptype, String create_tm) {
        this.pid = pid;
        this.pname = pname;
        this.price = price;
        this.ptype = ptype;
        this.create_tm = create_tm;
    }
    public int getPid() {
        return pid;
    }
    public void setPid(int pid) {
        this.pid = pid;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public String getPtype() {
        return ptype;
    }
    public void setPtype(String ptype) {
        this.ptype = ptype;
    }
    public String getCreate_tm() {
        return create_tm;
    }
    public void setCreate_tm(String create_tm) {
        this.create_tm = create_tm;
    }
}

 

posted @ 2019-01-18 14:23  SasaL  Views(280)  Comments(0Edit  收藏  举报