数据库连接池

来源:互联网 发布:微信网页授权 多域名 编辑:程序博客网 时间:2024/06/08 14:41

用前须知:

什么是数据库连接池?

当服务器启动时初始化一些链接放在连接池中,等待客户端调用。

客户端请求链接,则首先判断连接池中是否有可用的链接,如果有,则返回,

如果连接池中没有可用链接,则判断当前连接数是否超过了最大可用链接,

如果没有超过,则创建新的链接返回,如果超过了,则抛出无可用链接的异常,

最后,当客户端使用完链接之后,再将链接放回的连接池中,从而实现链接的重用。


数据源的作用:

1.获得连接的工程

2.DriverManager工具替代


工厂:

package com.bt.factory;import java.sql.Connection;import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSource;public class CF {    //给属性赋值    private static final String DRIVER = "com.mysql.jdbc.Driver";    private static final String URL = "jdbc:mysql:///bt1707";    private static final String USER = "root";    private static final String PWD = "password";    //构造BasicDataSource对象    private static BasicDataSource ds = new BasicDataSource();    static{        ds.setDriverClassName(DRIVER);        ds.setUrl(URL);        ds.setUsername(USER);        ds.setPassword(PWD);        ds.setMaxActive(10);        ds.setMaxWait(3000);    }    //对外提供数据源(javax.sql.DataSource-->DBCP--->COMMONS-DBCP)    public static DataSource getDs(){        return ds;    }    //元数据:MetaData ResultSetMetaData    public static Connection getConnection(){        try {            return ds.getConnection();        } catch (Exception e) {            e.printStackTrace();            return null;        }    }}

实现类(自己写接口去)

package com.etoak.dao;import java.util.List;import java.util.Map;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.BeanListHandler;import org.apache.commons.dbutils.handlers.MapHandler;import com.bt.factory.CF;import com.bt.po.Book;public class DaoImpl implements DaoIf {    QueryRunner qr = new QueryRunner(CF.getDs());    @Override    public int getCount() {        String sql = "select count(*) from book";        try {            Map map = qr.query(sql, new MapHandler());            return Integer.parseInt(map.get("count(*)")+"");        } catch (Exception e) {            e.printStackTrace();            return 0;        }    }    @Override    public Book getById(Integer id) {        try {            String sql = "select * from book where id = ?";            Book book = qr.query(sql, new BeanHandler(Book.class),id);            return book;        } catch (Exception e) {            e.printStackTrace();            return null;        }    }    @Override    public List<Book> getAll() {        try {            String sql = "select * from book";            List<Book> data = qr.query(sql, new BeanListHandler(Book.class));            return data;        } catch (Exception e) {            e.printStackTrace();            return null;        }    }}
原创粉丝点击