在iBatis中加入c3p0数据库连接池

我看论坛里有两个人写了在iBatis中加入c3p0,我也就不跟着掺合了,做这个的原因是没法用spring,又需要连接池,且对DBCP一直观感不加,没法,只好自己动手了

在iBatis中加入c3p0没啥难技术含量,写个文章备份下

首先打开iBatis的源码包,找到com.ibatis.sqlmap.engine.datasource包,在里面新建个类
C3p0DataSourceFactory,并实现DataSourceFactory接口,里面的代码是

Java代码

	private DataSource dataSource;
	
	public DataSource getDataSource() {
		return dataSource;
	}

	public void initialize(Map map) {
		C3p0Configuration c3p0 = new C3p0Configuration(map);
	    dataSource = c3p0.getDataSource();
	}


然后到com.ibatis.common.jdbc包里,新建类C3p0Configuration,里面的代码是。。。太长了,先给个片段,具体的下载附件吧,原来在dbcp那部分里,还有单独加载配置文件的方法,我觉得如果连这个xml都读不了,那别的一样没法读

Java代码
	private static final Probe PROBE = ProbeFactory.getProbe();
	private DataSource dataSource;

	/**
	 * Constructor to supply a map of properties
	 * 
	 * @param properties
	 *            - the map of configuration properties
	 */
	public C3p0Configuration(Map properties) {
		try {
			dataSource = legacyC3p0Configuration(properties);
		} catch (Exception e) {
			throw new RuntimeException(
					"Error initializing C3p0DataSourceFactory.  Cause: " + e, e);
		}
	}

	/**
	 * Getter for DataSource
	 * 
	 * @return The DataSource
	 */
	public DataSource getDataSource() {
		return dataSource;
	}

	private boolean notEmpty(String s) {
		return s != null && s.length() > 0;
	}

	private boolean notSelfString(String s, String compareStr) {
		return !s.equalsIgnoreCase(compareStr);
	}

	private DataSource legacyC3p0Configuration(Map map) {

		ComboPooledDataSource combo = null;

		try {
			if (map.containsKey("JDBC.Driver")) {

				combo = new ComboPooledDataSource();

				String driverClass = (String) map.get("JDBC.Driver");
				String jdbcUrl = (String) map.get("JDBC.ConnectionURL");
				String user = (String) map.get("JDBC.Username");
				String password = (String) map.get("JDBC.Password");

				Class.forName(driverClass);
				combo.setDriverClass(driverClass);
				combo.setJdbcUrl(jdbcUrl);
				combo.setUser(user);
				combo.setPassword(password);

				String acquireIncrement = (String) map
						.get("Pool.acquireIncrement");
				if (notEmpty(acquireIncrement)
						&& notSelfString(acquireIncrement, "acquireIncrement"))
					combo.setAcquireIncrement(Integer
							.parseInt(acquireIncrement));

......................


最后在com.ibatis.sqlmap.engine.config包里,找到SqlMapConfiguration,在里面找到,加上C3P0就好了

Java代码
    // DATA SOURCE ALIASES
    typeHandlerFactory.putTypeAlias("SIMPLE", SimpleDataSourceFactory.class.getName());
    typeHandlerFactory.putTypeAlias("DBCP", DbcpDataSourceFactory.class.getName());
    typeHandlerFactory.putTypeAlias("C3P0", C3p0DataSourceFactory.class.getName());
    typeHandlerFactory.putTypeAlias("JNDI", JndiDataSourceFactory.class.getName());


 

转载出处

http://zuzong.iteye.com/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值