dbcp、c3p0、druid三种数据库连接池的用法

dbcp、c3p0、druid三种数据库连接池的用法

dbcp

1.在maven项目中,pom.xml文件中添加dbcp依赖,版本可在maven官网查找最新版本。

	<dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
     </dependency>			

2.在resources目录下创建对应的dbcp.properties文件,进行相应的参数配置,参数除了上面固定的四个,其他可查阅资料查找你所需要的参数进行配置。

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
user=root
password=gzq000913


<!--maxActive: 最大连接数量-->
maxActive=150
<!--minIdle: 最小空闲连接-->
minIdle=5
<!--maxIdle: 最大空闲连接-->
maxIdle=20
<!--initialSize:初始化连接-->
initialSize=30
<!--连接被泄露时是否打印-->
logAbandoned=true
<!--removeAbandoned: 是否自动回收超时连接-->
removeAbandoned=true
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
removeAbandonedTimeout=10
<!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->
maxWait=1000
<!--在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位.-->
timeBetweenEvictionRunsMillis=10000
<!--在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->
numTestsPerEvictionRun=10
<!--1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程-->
minEvictableIdleTimeMillis=10000

3.创建对应的DBCPPool类,加载dbcp.properties文件,创建对应的数据源,就可以使用了

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

/**
 * DBCPPool类
 */
public class DBCPPool {

    static{
        
        //创建properties实例
        Properties properties = new Properties();
        try {
        //加载dbcp.properties文件内容
       properties.load(DBCPPool.class.getClassLoader().
                    getResourceAsStream("dbcp.properties"));
		//用BasicDataSourceFactory创建数据源
       DataSource dataSource = BasicDataSourceFactory.
           createDataSource(properties);
            
            
            
       //以下就是正常的连接使用
       Connection connection = dataSource.
                getConnection();
       PreparedStatement pstat = connection.
           prepareStatement
           ("show variables like 'basedir'");
       ResultSet rs = pstat.executeQuery();
       while (rs.next()){
                String name = rs.getString("variable_name");
                String value = rs.getString("value");
                System.out.println(name + " " + value);
            }

        rs.close();
        pstat.close();
        connection.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    //主函数测试
    public static void main(String[] args){
        new DBCPPool();
    }
}

c3p0

1.在maven项目中,pom.xml文件中添加c3p0依赖,版本可在maven官网查找最新版本。

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

2.在resources目录下创建对应的c3p0-config.xml文件,进行相应的参数配置,其他可查阅资料查找你所需要的参数进行配置。

<?xml version="1.0" encoding="UTF-8"?>
<!--根标签  和文件名称一致-->
<c3p0-config>

    <!--默认配置标签-->
    <!--<default-config>-->
    <!--可以指定名称进行配置  适用于多数据源场景-->
    <named-config name="myC3p0">
        <property name="driverClass">
            com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">
            jdbc:mysql://localhost:3306/jdbc</property>
        <property name="user">root</property>
        <property name="password">gzq000913</property>

        <!--初始化连接池的连接数量-->
        <property name="initialPoolSize">10</property>
        <!--最大可创建连接数-->
        <property name="maxPoolSize">10</property>
        <!--最小连接数量-->
        <property name="minPoolSize">2</property>
        <!--当没有空闲连接时  一次性创建的新连接数量-->
        <property name="acquireIncrement">2</property>
        <!--连接的最大空闲时间  如果一直未使用  则断掉此连接  如果配置为0  则永远不会断掉-->
        <!--<property name="maxIdleTime">0</property>-->
    </named-config>
    <!--</default-config>-->

</c3p0-config>

3.创建对应的C3P0Pool类,用ComboPooledDataSource("myC3p0")创建对应名称的数据源,就可以使用了

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * C3P0Pool类
 */
public class C3P0Pool {

    static {
    //用ComboPooledDataSource获取数据源
        ComboPooledDataSource dataSource = new   ComboPooledDataSource("myC3p0");
        try {
        
        
        //下面就是正常使用
            Connection connection = dataSource.
            getConnection();
            PreparedStatement pstat = connection.
            prepareStatement
            ("show variables like 'basedir'");
            ResultSet rs = pstat.executeQuery();
            while (rs.next()){
                String name = rs.getString("variable_name");
                String value = rs.getString("value");
                System.out.println(name + " " + value);
            }
            rs.close();
            pstat.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //主函数测试
    public static void main(String[] args){
        new C3P0Pool();
    }
}

druid

druid是现在最普遍最好用的连接池,是阿里巴巴开源的,可以在github上搜索到它的使用文档以及源代码

1.在maven项目中,pom.xml文件中添加druid依赖,版本可在maven官网查找最新版本。

	<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.21</version>
    </dependency>		

2.在resources目录下创建对应的druid.properties文件,进行相应的参数配置,参数除了上面固定的四个,其他可查阅资料查找你所需要的参数进行配置。

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
user=root
password=gzq000913

# 初始化大小
initialSize=5
# 最小空闲数
minIdle=10
# 最大活跃数
maxActive=20
# 获取连接的等待时间
maxWait=10000

# 间隔多长时间  检测是否关闭空闲连接  单位是毫秒
timeBetweenEvictionRunsMillis=2000

# 控制一个连接在资源池中  最大或最小的生存时间  单位也是毫秒
minEvictableIdleTimeMillis=600000
maxEvictableIdleTimeMillis=900000

3.创建对应的DruidPool类,加载druid.properties文件,创建对应的数据源,就可以使用了

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;


/**
 *DruidPool类
 */
public class DruidPool {

    static {
        //创建properties实例
        Properties properties = new Properties();
        try {
            properties.load(DruidPool.class.
                            getClassLoader().
                            getResourceAsStream
                            ("druid.properties"));
            //用DruidDataSourceFactory创建数据源
            DataSource dataSource = DruidDataSourceFactory.
                createDataSource(properties);
            
            
            //以下就是正常使用了
            Connection connection = dataSource.
                getConnection();
            PreparedStatement pstat = connection.
                prepareStatement
                ("show variables like 'basedir'");
            ResultSet rs = pstat.executeQuery();
            while (rs.next()){
                String name = rs.getString("variable_name");
                String value = rs.getString("value");
                System.out.println(name + " " + value);
            }

            rs.close();
            pstat.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    //主函数测试
    public static void main(String[] args){
        new DruidPool();
    }

}

posted @ 2021-02-01 19:32  臻选优质,原生Java  阅读(373)  评论(0)    收藏  举报