实战:DBUtils框架与C3P0配合使用

之前转载了博文如何使用DBUtils框架和C3P0连接池,现在就通过一个类来实现使用,该类亲测运行无问题:

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

import org.apache.commons.dbutils.BasicRowProcessor;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
importorg.apache.commons.dbutils.handlers.BeanListHandler;
importorg.apache.commons.dbutils.handlers.ScalarHandler;

import MatcherClass.HumpMatcher;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JdbcUtilC3P0 {
    // 创建连接池的数据源对象
    //指定的是从c3p0-config.xml配置文件中选择那个链配置进行连接
//读取c3p0-config.xml name为sqlite
    private staticComboPooledDataSource cpds = newComboPooledDataSource("sqlite");
    
    private staticQueryRunner run;
    
    publicJdbcUtilC3P0(){
    cpds = newComboPooledDataSource();
    run = newQueryRunner(cpds);
    }
    
    publicJdbcUtilC3P0(String sqlName){
    cpds = newComboPooledDataSource(sqlName);
    run = newQueryRunner(cpds);
    }
 
    // 书写返回连接对象的方法
    public static ConnectiongetConn() {
       try {
           returncpds.getConnection();
       } catch (SQLException e) {
          e.printStackTrace();
       }
       return null;
    }
 
public T queryForObject(String sql, Object params[], Classclazz) {
T obj = null;
try {
showSql(sql);
obj = (T) run.query(sql, new BeanHandler(clazz,newBasicRowProcessor(new MyBeanProcessor(new HumpMatcher()))),params);//这里使用了我自己重写的驼峰适配器,如果默认可使用 new BeanHandler(T.Class)
} catch (SQLException e) {
e.printStackTrace();
}
return obj;
}

public List queryForList(String sql, Object[] params, Classclazz) {
List obj = null;
try {
showSql(sql);
obj = (List) run.query(sql, new BeanListHandler(clazz),params);
} catch (SQLException e) {
e.printStackTrace();
}
return obj;
}
public int storeInfoAndGetGeneratedKey(String sql, Object[]params) {
int pk = 0;
try {
showSql(sql);
run.update(sql, params);
pk = ((Long) run.query("SELECT LAST_INSERT_ID()", newScalarHandler(1))).intValue();
} catch (SQLException e) {
e.printStackTrace();
}
return pk;
}


public int update(String sql, Object[] params) {
int i = 0;
try {
showSql(sql);
i = run.update(sql, params);
} catch (SQLException e) {
e.printStackTrace();
}
return i;

}
public int bat(String sql,Class clazz, Object[][]params){
try {
showSql(sql);
run.batch(sql,  params);
} catch (SQLException e) {
e.printStackTrace();
return -1;
}
return 0;
}
private void showSql(String sql) {
System.out.println(sql);
}
    // 释放资源的操作
    public static voidrelease(ResultSet rs, PreparedStatement pstmt,
           Connectionconn) {
       if (rs != null) {
           try{
              rs.close();
           } catch(SQLException e) {
              // TODO Auto-generated catchblock
              e.printStackTrace();
           }
       }
       if (pstmt != null) {
           try{
              pstmt.close();
           } catch(SQLException e) {
              // TODO Auto-generated catchblock
              e.printStackTrace();
           }
       }
       if (conn != null) {
           try{
              conn.close();
           } catch(SQLException e) {
              // TODO Auto-generated catchblock
              e.printStackTrace();
           }
       }
 
    }
}



这里写一个测试的main来运行:
public static void main(String[] args) throws SQLException{
JdbcUtilC3P0 jc = new JdbcUtilC3P0();
Connection conn = JdbcUtilC3P0.getConn();
String sql = "select * from user";
List user = jc.queryForList(sql, null, User.class);
for(User u : user){
System.out.println(u);
}
// sql = "insert into user (address, name, tel_number) values(?, ?, ?)";
// Object[][] upra ={{"大望路东","刘兰","1234"},{"大屯路15号","汪涵","2345"}};
// jc.insertBat(sql, User.class, upra);
JdbcUtilC3P0.release(null, null, conn);
}


到这里就全部完成啦,Mark一下,供以后参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值