数据库连接池bonecp使用

1、需要JAR包:

        activation-1.1.jar

        bonecp-0.7.0.jar

        commons-dbutils-1.1.fixed.jar

2、数据库连接池工具类:

    

package com.locator.util;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.log4j.Logger;

import com.jolbox.bonecp.BoneCP;
import com.jolbox.bonecp.BoneCPConfig;

/**
 * 
 * 项目名称(Project name):MySQLConnectonPool
 * 包 名 (Package name):com.lixunhui.util
 * <p>
 * 类 名 (Class name):ConnectionPool
 * <p>
 * 类描述(Description):
 * <p>
 * 作 者 (Author) :李勋辉
 * <p>
 * 创建时间(Create Date):2013-3-30 下午1:58:35
 * <p>
 * 修改人:TopWalk
 * <p>
 * 修改时间:2013-3-30 下午1:58:35
 * <p>
 * 修改备注:
 * <p>
 * 版 本 (Version): @version
 * <p>
 */
public class ConnectionPool {
	static Logger log=Logger.getLogger(ConnectionPool.class);
	private static BoneCP connectionPool;
	/**
	 * 从连接池中获取Connection
	 * 
	 * @Author 李勋辉
	 * @Description
	 * @return
	 */
	
	public static Connection getConnection() {
		Connection connection = null;
		int totalConnection=0;
		int freeConnection=0;
		int busyConnection=0;
		
		if(null==connectionPool){
			log.debug("数据库连接池不存在,新建连接池并从中获取数据库链接");
			String username = ResourcesProp.getValue("username");
			String password = ResourcesProp.getValue("password");
			String url = ResourcesProp.getValue("url");
			String driver = ResourcesProp.getValue("driver");
			try {
				Class.forName(driver);
				BoneCPConfig config = new BoneCPConfig();
				// 设置URL
				config.setJdbcUrl(url);
				// 设置用户名
				config.setUsername(username);
				// 设置密码
				config.setPassword(password);
				// 设置60秒检索一次数据库的空暇连接数
				config.setIdleConnectionTestPeriod(60);
				// 设置余暇链接时候
				config.setIdleMaxAge(240);
				// 设置每个分区中最大连接数
				config.setMaxConnectionsPerPartition(100);
				// 设置每个分区中最小链接数
				config.setMinConnectionsPerPartition(5);
				// 当链接用尽的时候,一次获取多少个连接数
				config.setAcquireIncrement(5);
				config.setReleaseHelperThreads(10);
				config.setPartitionCount(3);
				connectionPool = new BoneCP(config);
				connection = connectionPool.getConnection();
				totalConnection=connectionPool.getTotalCreatedConnections();
				freeConnection=connectionPool.getTotalFree();
				busyConnection=connectionPool.getTotalLeased();
				log.debug("从数据库连接池中获取连接成功,总链接数"+totalConnection+"空闲连接数"
						+freeConnection+"总占用"+busyConnection);
			} catch (Exception e) {
				log.error("从新建数据库连接池中获取链接失败,总链接数"+totalConnection+"空闲连接数"
						+freeConnection+"总占用"+busyConnection, e);
				e.printStackTrace();
			}
		}else{
			log.debug("数据库连接池存在,从连接池中获取数据库链接");
			try {
				connection=connectionPool.getConnection();
				totalConnection=connectionPool.getTotalCreatedConnections();
				freeConnection=connectionPool.getTotalFree();
				busyConnection=connectionPool.getTotalLeased();
				log.debug("从数据库连接池中获取链接成功,总链接数"+totalConnection+"空闲连接数"
						+freeConnection+"总占用"+busyConnection);
			} catch (SQLException e) {
				log.error("从数据库链接池中获取链接失败",e);
				e.printStackTrace();
			}
		}
		return connection;
	}
}

3、DateSource工具类:

package com.locator.util;

import com.jolbox.bonecp.BoneCPDataSource;

public class DateSourceUtil {
	private static BoneCPDataSource dataSource;

	public synchronized static BoneCPDataSource getDataSource() {
		if (null == dataSource) {
			dataSource = new BoneCPDataSource();

			String username = ResourcesProp.getValue("username");
			String password = ResourcesProp.getValue("password");
			String url = ResourcesProp.getValue("url");

			dataSource.setUsername(username);
			dataSource.setPassword(password);
			dataSource.setJdbcUrl(url);
			{//
				dataSource.setMaxConnectionsPerPartition(10);
				dataSource.setMinConnectionsPerPartition(5);
				dataSource.setIdleConnectionTestPeriod(60);
				dataSource.setIdleMaxAge(240);
				dataSource.setAcquireIncrement(5);
				dataSource.setReleaseHelperThreads(3);
			}
		}
		return dataSource;
	}
}

4、用法:

    在查询或者更新的时候可以使用以下代码调用数据库连接池中的连接信息:

BoneCPDataSource dateSource=DateSourceUtil.getDataSource();
	Connection conn = ConnectionPool.getConnection();
	QueryRunner queryRunner=new QueryRunner(dateSource);
	
	//更新:queryRunner.update(conn,sql, new Object[]{……更新参数,逗号隔开});
	//查询:queryRunner.query(conn,SQL,new Object[]{……参数}, new BeanListHandler(查询结果转换成的对象//User.class));

  主页地址 : http://www.jolbox.com/

转载于:https://my.oschina.net/huiger/blog/224638

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值