DBCP 与 c3p0 连接池的简单使用

一、概览

结构图:
在这里插入图片描述
jar包的位置:WEB-INF/lib 和 src
配置文件位置:src

二、配置

c3p0 和 DBCP 连接池都有两种方法配置:

  • 配置文件配置
    c3p0配置文件:c3p0-config.xml
    dbcp配置文件:dbcpconfig.properties
  • 直接在代码中配置
c3p0配置
public class C3P0Demo {
    public static DataSource getDataSourceWithC3P0(){
        ComboPooledDataSource c3p0 = new ComboPooledDataSource();
        try {
            c3p0.setDriverClass("com.mysql.cj.jdbc.Driver");
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
        c3p0.setJdbcUrl("jdbc:mysql://localhost:3306/db_stu?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai");
        c3p0.setUser("root");
        c3p0.setPassword("root");

        return c3p0 ;
    }

    public static DataSource getDataSourceWithC3P0ByXml(){
        ComboPooledDataSource c3p0 = new ComboPooledDataSource("yanqun");
        return c3p0 ;
    }

    public static void main(String[] args)throws Exception {
        System.out.println(getDataSourceWithC3P0().getConnection());
        System.out.println(getDataSourceWithC3P0ByXml().getConnection());
    }
}


c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <default-config>

        <!-- 如果要研究某个xml中可以设置哪些属性。找相关类的 属性 或者setXxx()-->

        <property name="user">root</property>

        <property name="password">root</property>

        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>

        <property name="jdbcUrl">jdbc:mysql://localhost:3306/db_stu?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai</property>

        <property name="checkoutTimeout">20000</property>

    </default-config>

    <named-config name="yanqun">

        <property name="user">root</property>

        <property name="password">root</property>

        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>

        <property name="jdbcUrl">jdbc:mysql://localhost:3306/db_stu?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai</property>

        <property name="checkoutTimeout">20000</property>

    </named-config>

</c3p0-config>

说明:jdbcUrl一栏中的原来的&改用&amp;

DBCP配置
public class DbcpDemo {

    public static DataSource getDataSourceWIthDBCP(){
        BasicDataSource dbcp = new BasicDataSource();
        dbcp.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dbcp.setUrl("jdbc:mysql://localhost:3306/db_stu?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai");
        dbcp.setUsername("root");
        dbcp.setPassword("root");
        dbcp.setInitialSize(20);
        dbcp.setMaxActive(10);
        return dbcp;
    }
    public static DataSource getDataSourceWIthDBCPByProperties() throws Exception{
        DataSource dbcp = null ;
        Properties props = new Properties();
        InputStream input = new DbcpDemo().getClass().getClassLoader().getResourceAsStream("dbcpconfig.properties");
        props.load(  input );

        dbcp = BasicDataSourceFactory.createDataSource(props ) ;
        return dbcp;
    }

    public static void main(String[] args) throws Exception {
        DataSource ds = getDataSourceWIthDBCP();
        DataSource ds1 = getDataSourceWIthDBCPByProperties();
        System.out.println(ds);
        System.out.println(ds1);
    }
}


dbcpconfig.properties
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_stu?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username=root
password=root
initialSize=10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值