0
点赞
收藏
分享

微信扫一扫

JDBC 多种数据库连接池 连接演示

juneyale 2022-02-17 阅读 68

目录

1.C3P0

使用前准备:

方式一:硬编码(数据库配置写进代码里)

方式二:写配置文件, 代码和配置分离(开发推荐)

2.DBCP

使用前准备:

 方式一:硬编码(数据库配置写进代码里)

方式二:写配置文件, 代码和配置分离(开发推荐)

3.Druid(德鲁伊)

使用前准备:

上代码


1.C3P0

使用前准备:

官网下载jar包

c3p0-v0.9.5.5 - JDBC3 Connection and Statement Pooling - Documentation (mchange.com)

注意是 bin.zip 

 

 下好以后来到这个路径下, 复制这两个jar包

 

项目下新建一个文件夹

 

把jar包复制到这里

CTRL选中两个jar包右键

 

 

选项目或者模块都可以,我们选择模块库, 再点确定

 

新建测试类测试

 

方式一:硬编码(数据库配置写进代码里)

本文使用@Test单元测试方法测试, 没见过换成main方法即可 

@Test
public void getConnection() throws PropertyVetoException, SQLException {
        //获取c3p0数据库连接池
        ComboPooledDataSource cpds = new ComboPooledDataSource();

        cpds.setDriverClass("com.mysql.cj.jdbc.Driver"); //加载JDBC驱动
        cpds.setJdbcUrl("jdbc:mysql://localhost:3306/test");//test对应你数据库的一张表
        cpds.setUser("root");//用户名
        cpds.setPassword("admin");//密码
       
        Connection cn = cpds.getConnection();//获取数据库连接
        System.out.println(cn);

        DataSources.destroy(cpds);//销毁连接池
}

运行结果: (注意, 红色是日志信息, 不是报错) 

方式二:写配置文件, 代码和配置分离(开发推荐)

src下创建文件, 文件名(连接池规定的不能改) 

 XML文件内容如下

<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
    <!-- 提供获取连接的4个基本信息 -->
    <named-config name="helloC3P0">
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
        <property name="user">root</property>
        <property name="password">admin</property>
    </named-config>
</c3p0-config>

其中

name可自定义

我们再写代码(构造函数里写刚刚自定义的名字)

    @Test
    public void getConnection2() throws SQLException {
        ComboPooledDataSource cpds = new ComboPooledDataSource("helloC3P0");
        Connection cn = cpds.getConnection();
        System.out.println(cn);
        DataSources.destroy(cpds);
    }

运行结果:

 

2.DBCP

使用前准备:

官网下载jar包(3个)

1.

DBCP – Overview (apache.org)

注意事项: Java8是最低要求版本

 

2.

Pool – Download Apache Commons Pool

 

3.

Apache Commons Logging - Download Apache Commons Logging

 

这三个包

 

 

 

jar包放到lib目录下, 添加为库(其他步骤同上文, 略)

 

 方式一:硬编码(数据库配置写进代码里)

    @Test
    public void testDBCP() throws SQLException {
        BasicDataSource source = new BasicDataSource();
        source.setDriverClassName("com.mysql.cj.jdbc.Driver");
        source.setUrl("jdbc:mysql://localhost:3306/test");
        source.setUsername("root");
        source.setPassword("admin");

        Connection cn = source.getConnection();
        System.out.println(cn);
    }

 

方式二:写配置文件, 代码和配置分离(开发推荐)

src右键

 

注意首字母小写

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///test
username=root
password=admin

测试

@Test
public void test2() throws Exception {
    InputStream is = ClassLoader.getSystemClassLoader().
        getResourceAsStream("dbcp.properties");
    Properties pros = new Properties();
    pros.load(is);
    BasicDataSource source = BasicDataSourceFactory.createDataSource(pros);

    Connection cn = source.getConnection();
    System.out.println(cn);
}

运行结果: 

3.Druid(德鲁伊)

我们用到是阿里的数据库连接池德鲁伊

 

使用前准备:

官网下载jar包

Central Repository: com/alibaba/druid/1.2.8 (maven.org)

 

jar包放到lib目录下, 添加为库(其他步骤同上文, 略)

 

为了不麻烦 直接写第二种了

src下新建一个druid.properties

配置信息同dbcp.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///test
username=root
password=admin

上代码

    @Test
    public void test() throws Exception {
        InputStream is = ClassLoader.getSystemResourceAsStream("druid.properties");
        Properties pros = new Properties();
        pros.load(is);
        DataSource source = DruidDataSourceFactory.createDataSource(pros);
        Connection cn = source.getConnection();
        System.out.println(cn);
    }

举报

相关推荐

0 条评论