十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我看论坛里有两个人写了在iBatis中加入c3p0连接池,我也就不跟着掺合了,做这个ibatis下加入c3p0连接池的方法的原因是没法用spring,又需要连接池,且对DBCP一直观感不加,没法,只好自己动手加入c3p0连接池了。

创新互联自2013年创立以来,先为郯城等服务建站,郯城等地企业,进行企业商务咨询服务。为郯城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
在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();   
}  
 private DataSource dataSource;
 
 public DataSource getDataSource() {
  return dataSource;
 }
 public void initialize(Map map) {
  C3p0Configuration c3p0 = new C3p0Configuration(map);
     dataSource = c3p0.getDataSource();
 }
在ibatis下加入c3p0连接池的下一步是到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));   
  
......................  
 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就可以实现在ibatis下加入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()); 
通过这种手段,可以在ibatis下加入c3p0连接池,但是由于代码太长,在这里就不一一列出了,本文只是提出了一个在ibatis下加入c3p0连接池的思路,具体关于ibatis下加入c3p0连接池代码还需要朋友们自己斟酌。