c3p0连接池 dbutiles框架

1.什么是c3p0?

数据连接的管道,链接数据库与数据访问层

2.怎么应用?

(1)加载c3p0的jar架包

csp0框架-----c3p0-0.9.2.1架包------lib(内容三个包全部复制)-----项目WebRoot----lib(如果没有加载到Web APP中点击右键选中包点击Build Path)

(2)做c3p0的连接配置

src下面新建File(c3p0.properties)添加内容:

c3p0.jdbcUrl=jdbc:oracle:this:@127.0.0.1:1521:orcl  //jdbc访问地址
c3p0.driverClass=oracle.jdbc.driver.OracleDriver
c3p0.user=car   //
c3p0.password=123   //
c3p0.acquireIncrement=3  //链接增涨数
c3p0.idleConnectionTestPeriod=60  //链接等待时间
c3p0.initialPooISize=10   //最开始连接池大小
c3p0.maxIdleTime=60
c3p0.maxPoolsize=20
c3p0.maxStatements=100
c3p0.minPoolSize=5


 
获取连接对象的方法:

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3p0ConnectionHelper {
//要让其在内存中长期存在
private static DataSource ds; 
//private static Connection con=null;//判断连接池
//对连接对象创建一个人副本
private static ThreadLocal<Connection> t=new ThreadLocal<Connection>();
static{
ds=new ComboPooledDataSource();
}
  /**
   * 获取连接对象
 * @return
 * @throws SQLException
 */
 public static Connection getConnection() throws SQLException{
 //DataSource ds=new ComboPooledDataSource();//会自动在src目录下找c3p0的配置
 //return ds.getConnection();
Connection con=t.get();
 if(con==null){
 con=ds.getConnection();
 t.set(con);//创建一个线程变量的副本
 }
 return con;
  }
/**
 * 关闭连接对象的方法
 * @throws SQLException
 */
public static void closeConnection() throws SQLException{
Connection con=t.get();
if(con!=null){
        con.close();
t.remove();//把副本对象从线程中去掉
}
 } 
}


3.dbutil框架应用?

首先按照三成架构的形式构建:
dao层的接口:
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.List;


/**
 * 针对数据库的数据的增删改查的功能做的接口
 * @author ZY
 *
 */
public interface IDaoSuperManager<T> {
    /**
     * 向数据库表里添加一条数据的方法
     * @param t
     * @throws SQLException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    public int  addItem(T t) throws SQLException, IllegalArgumentException, IllegalAccessException;
    /**
     * 从数据库表里删除一条数据的方法
     * @param objId
     */
    public int removeItem(Object objId) throws SQLException;
    /**
     * 更新数据库表里的一条字段的方法
     * @param t
     */
    public int updateItem(T t) throws SQLException;
    
    /**
     * 根据主键字段获取该条数据,并转换成实体对象
     * @param objId
     * @return
     * @throws InvocationTargetException 
     * @throws IllegalArgumentException 
     * @throws IllegalAccessException 
     * @throws SecurityException 
     * @throws NoSuchMethodException 
     */
    public T getModel(Object objId) throws SQLException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException;
    
    /**
     * 根据查询条件获取多条数据,并转换成相应的集合
     * @param objects
     * @return
     * @throws InvocationTargetException 
     * @throws IllegalArgumentException 
     * @throws IllegalAccessException 
     * @throws SecurityException 
     * @throws NoSuchMethodException 
     */
    public List<T> getList(T t) throws SQLException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException;
}



接口实现类dao.imp:
导入架包
csp0框架----------commons-dbutils-1.6-bin-----项目WebRoot----lib(如果没有加载到Web APP中点击右键选中包点击Build Path)
用户登记的道儿UserInfo:
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import javax.management.Query;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.gxa.bj.dao.IDaobudejie;
import com.gxa.bj.modle.UserInfo;
import com.gxa.bj.util.BeanUitl;
import com.gxa.bj.util.C3p0ConnectionHelper;
public class UserInfoDao implements IDaobudejie<UserInfo>{
     QueryRunner queryRunner=new QueryRunner();
@Override
public int addItem(UserInfo t) throws IllegalArgumentException, IllegalAccessException, SQLException{
String sql=BeanUitl.getInsert(t);
Connection con=C3p0ConnectionHelper.getConnection();
int i=queryRunner.update(con,sql);
C3p0ConnectionHelper.closeConnection();
return i;
}
@Override
public int removeItem(Object objId) throws SQLException, IllegalArgumentException, IllegalAccessException {
UserInfo u=new UserInfo();
u.setUserId((Integer)objId);
String sql=BeanUitl.getDelete(u);
Connection con=C3p0ConnectionHelper.getConnection();
int i=queryRunner.update(con,sql);
C3p0ConnectionHelper.closeConnection();
return i;
}
@Override
public int updateItem(UserInfo t) throws SQLException, IllegalArgumentException, IllegalAccessException {
String sql=BeanUitl.getUpdate(t);
Connection con=C3p0ConnectionHelper.getConnection();
int i=queryRunner.update(con,sql);
C3p0ConnectionHelper.closeConnection();
return i;
}
@Override
public UserInfo getMolde(Object objId) throws SQLException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
UserInfo u=new UserInfo();
u.setUserId((Integer)objId);//得到用户编号
String sql=BeanUitl.getSelectSQL(u);
Connection con=C3p0ConnectionHelper.getConnection();
//查询返回实体对象
UserInfo u1= queryRunner.query(con,sql,new BeanHandler<UserInfo>(UserInfo.class));
C3p0ConnectionHelper.closeConnection();
return u1;
}
@Override
public List<UserInfo> getList(UserInfo t) throws SQLException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
String sql=BeanUitl.getSelectSQL(t);
Connection con=C3p0ConnectionHelper.getConnection();
//查询返回集合对象
List<UserInfo> list=queryRunner.query(con, sql,new BeanListHandler<UserInfo>(UserInfo.class));
C3p0ConnectionHelper.closeConnection();
return list;
}
}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值