C3P0的使用和配置——Maven项目中和普通java项目

1、配置方式

c3p0的配置方式分为三种,分别是

1.类路径下提供一个c3p0-config.xml文件

2.类路径下提供一个c3p0.properties文件

3.setters一个个地设置各个配置项

 datasource = new ComboPooledDataSource();
//连接配置
datasource.setJdbcUrl("jdbc:mysql://localhost:3306/test?serverTimezone=UTC");
datasource.setDriverClass("com.mysql.cj.jdbc.Driver");
datasource.setPassword("123");
datasource.setUser("root");

//连接池配置
datasource.setAcquireIncrement(5);//每创建的数量间隔
datasource.setInitialPoolSize(5);//初始化池的大小
datasource.setMaxPoolSize(20);//最大大小
datasource.setMinPoolSize(5);//最小大小

2、配置文件的位置

我们主要是要注意配置文件的位置

2.1、Maven项目的c3p0配置

1、先导入c3p0的依赖

在pom.xml文件里面添加

  <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

2、在resources文件夹添加配置文件信息
不要添加到src文件下面,而是resources文件夹下面!!!

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
    <!-- 默认配置  创建连接池对象时,默认是加载该配置信息-->
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/test?serverTimezone=UTC</property>
        <property name="user">root</property>
        <property name="password">123456</property>

        <property name="initialPoolSize">5</property>
        <property name="maxPoolSize">20</property>
        <property name="minPoolSize">5</property>
        <property name="checkoutTimeout">3000</property>
    </default-config>
    <!--为oracle提供的配置 创建连接池对象时,可以指定命名加载配置信息-->

    <named-config name="oracle-config">

        <property name="jdbcUrl">jdbc:oracle:thin:@地址:端口:ORCL</property>
        <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
        <property name="user">root</property>
        <property name="password">12345</property>
        <!-- 池参数 -->
        <property name="acquireIncrement">3</property>
        <property name="initialPoolSize">30</property>
        <property name="minPoolSize">2</property>
        <property name="maxPoolSize">50</property>
    </named-config>

    <named-config name="otherc3p0">
    </named-config>
</c3p0-config>

3、测试:

 datasource = new ComboPooledDataSource();//文件位置对的话,自动加载
 public static void main(String[]args) {
    
    
        Connection connection= null;
        Statement statement = null;
        ResultSet res = null;
        try{
    
    
            System.out.println("connect to database....");
            connection = JDBCUtils_C3P0.getConnect();

            System.out.println("create statement...");
            statement = connection.createStatement();

            //3、选择sql命令操作数据库中的数据
            String sql;
            sql="select * from bank";
            //4、执行sql语句,获取结果集
            res = statement.executeQuery(sql);//获取结果集

            //5、从结果集里面获取数据
            while(res.next()){
    
    
                int id = res.getInt("id");
                String name = res.getString("name");
                System.out.println(id+":"+name);

            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        }finally {
    
    
                JDBCUtils_C3P0.free(connection,statement,res);
        }
    }

2.2、普通java项目的配置

导入依赖包,src文件夹下添加配置文件。(未尝试)
包下载:
链接:https://pan.baidu.com/s/1rAEXqMYvLv7bU4B-oE7o5w
提取码:udyg
复制这段内容后打开百度网盘手机App,操作更方便哦

3、c3p0与DBCP的区别

  • dbcp没有自动回收空闲连接的功能,c3p0有。
  • Hibernate等框架默认推荐使用c3p0作为连接池,后续不支持DBCP

猜你喜欢

转载自blog.csdn.net/qq_44861675/article/details/108165571