JDBC连接池和dbutils

连接池的概念

用池来管理connection,这样可以重复的使用Connection。有了池就不用自己来创建connection,而是通过池来获得connection对象。java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口,这样应用程序可以方便的切换不同厂商的连接池。常见的连接池有DBCP,C3P0。

C3P0连接池

c3p0是免费开源的连接池,目前使用它的开源项目有spring,hibernate等,使用第三方工具需要导入jar包,c3p0使用时需要添加配置文件c3p0-config.xml 。导入的jar包如下,一般为2个。

配置文件内容详情参考如下博客https://blog.csdn.net/caychen/article/details/79625411

C3P0工具类编写

public class C3P0Utils{

private static ComboPooledDataSource  datasource = new ComboPooledDataSource('itcast')

public static DataSource getDataSource(){

return dataSource;

}

public static Connection getConnection(){

try{

return dataSource.getConnection();

}catch(Exception e){

throw new RuntimeException(e);

        }

     }

}

DBCP连接池

DBCP也是一个开源的连接池,在企业开发中比较常见,是tomcat的内置连接池。

同样地,第一步需要导入DBCP的jar包,如下所示

配置文件使用.properties文件

public class DBCPUtils{

static{

try{

InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream('dbcp.properties');

Properties props = new Properties();

props.load(is);

dataSource = BasicDataSourceFactory.createDataSource(props);

}catch(Exception e){

throw new RuntimeException(e);

}

}

public static DataSource getDataSource(){

return dataSource;

}

public static  Connection getConnection(){

try{

return dataSource.getConnection();

}catch (Exception e){

throw new RuntimeException(e);

    }

  }

}

使用DBUtils完成增删改查的操作

DBUtils是JDBC的简化开发包,同样需要使用连接池技术(获得连接);

DBUtils三个核心功能介绍:

1.QueryRunner提供对sql语句的操作

2.ResultSetHandler接口,用于定义select操作后,怎样封装结果集

3.Dbutils类作为一个工具类定义了关闭资源与事务处理的方法。

QueryRunner核心类介绍

QueryRunner(DataSource ds)提供数据源(连接池),DButils底层自动维护连接Connection

update执行更新数据;query执行查询数据。

JavaBean组件:JavaBean就是一个类,在开发中常用于封装数据,具有如下特性:

1.需要实现接口:java.io.Serializable

2.提供私有字段:private 类型 字段名

3.提供getter/setter方法

4.提供无参构造

使用QueryRunner的代码增删改操作模板:

public void demo(){

try{

QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); //调用C3P0工具类

String sql = 'sql 语句';

Object[] params = {参数写入};

queryRunner.update(sql,params);

}catch(Exception e){

throw new RuntimeException(e);

}

}

使用QueryRunner的代码查询操作模板:

public void demo(){

try{

QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); //调用C3P0工具类

String sql = 'sql 语句';

Object[] params = {参数写入};

Category cg = queryRunner.query(sql,new  BeanHandler<Category>(Category.class), params);

System.out.println(cg);

}catch(Exception e){

throw new RuntimeException(e);

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值