数据库连接池

用前须知:

什么是数据库连接池?

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

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

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

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

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


数据源的作用:

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;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值