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

本文介绍如何在iBatis中集成C3p0连接池,包括创建C3p0DataSourceFactory和C3p0Configuration类,以及修改SqlMapConfiguration配置等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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都读不了,那别的一样没法读

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就好了

// 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());


[color=red]
具体的源码看附件吧,文件名是“iBatis添加c3p0.rar”里面有c3p0-config.properties和SqlMapConfig.xml

还有打包好的ibatis jar,在附件里,名字是ibatis-2.3.4.726-c3p0.jar
[/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值