c3p0

作用

以前需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。而使用数据库连接池c3p0,直接利用现有可用连接避免了数据库连接初始化和释放过程的时间开销,从而减少了系统的响应时间。

从开发者角度考虑,减少开发工作量,而且还达到了更好的效果。

使用方法

  1. 引入相应的jar c3p0-xxx.jar
导入jar包后,右键选择构造路径,添加到路径中
  1. 将c3pθ配置文件添加到src下。要求配置文件名固定: c3p0-config.xml , 位置- -定放在src下面并且编写(修改)配置文件

  1. 创建一个数据源对象
 ComboPooledDataSource dataSource = new ComboPooledDataSource();conn = dataSource.getConnection();
  1. 通过数据源对象获取连接对 象和关闭连接对象(还到池子中)
public class Demo01 {public static void main(String[] args) {//不带参数:默认找buildpath下c3pθ- config.xml中的<default- config>ComboPooledDataSource dataSource = new ComboPooledDataSource();Connection conn;try {conn = dataSource.getConnection();System.out.println(conn);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(conn! =nu1l){conn.close();|}
}

DBUtil

作用

  • 无资源泄漏 - DBUtils类确保不会发生资源泄漏。
  • 清理和清除代码 - DBUtils类提供干净清晰的代码来执行数据库操作,而无需编写任何清理或资源泄漏防护代码。
  • Bean映射 - DBUtils类支持从结果集中自动填充javabeans。

DbUtil是apache旗下的一个JDBC封装的开源工具jar包,使用它调用数据库CRUD操作非常简便。

这个才是重头戏,大大降低了我们操作数据库的难度。

使用方法

  1. 引入jar包dbutils包和commops-io包
和上面类似,src导入jar包后,右键选择构造路径,添加到路径中
  1. 创建一个QueryRunner对象
//首先用C3P0  new一个数据源(建议声明在daoUtil里)
public static final ComboPooledDataSource dataSource = new ComboPooledDataSource();
//创建一个QueryRunner对象(使用完后它会自动关闭)
QueryRunner runner = new QueryRunner(dataSource);
  1. 编写sql
//使用DButil可以让我们的重心回归编写SQL代码
String sql = "select * from emp";
  1. 调用QueryRunner的方法:

runner.query 或者 runner.update

增删改 使用 update
查询 使用 query

完整样例

// 根据地点查询部门信息
public static List<Dept> selectDeptByloc(String loc) {QueryRunner runner = new QueryRunner(DataPoolUtil.dataSource);String sql = "select * from dept where loc = ?";try {return runner.query(sql, new BeanListHandler<Dept>(Dept.class),loc);} catch (SQLException e) {// TODO 自动生成的 catch 块e.printStackTrace();}return null;
}

涉及到的类Dept:

package bean;public class Dept {private int deptno;private String dname;private String loc;public int getDeptno() {return deptno;}public void setDeptno(int deptno) {this.deptno = deptno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getLoc() {return loc;}public void setLoc(String loc) {this.loc = loc;}@Overridepublic String toString() {return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";}}

附下载链接:

C3P0: https://jww.lanzous.com/iqJzIec6drc
DBUtil https://jww.lanzous.com/b015l1akj   密码:9u1f

Java的拓展包C3P0和DBUtil的使用相关推荐

  1. Java基础07 包

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存为一个文件,比如Tes ...

  2. java jdbc jar包_通过 Spring 框架如何进行JDBC操作呢?

    Spring 整合 JDBC 的方式 添加依赖 编写配置文件 db.properties bean.xml 配置修改 配置数据源 模板类配置 测试整合结果 案例实操 添加依赖 数据库驱动 jar 包 ...

  3. JAVA并发类包介绍

    JAVA并发Apl介绍合集 1. java.util.concurrent包 1.1 Executors线程池 1.2 Queues队列 1.3 Concurrent Collections 1.4 ...

  4. pip安装拓展包--网络超时/Read timed out问题

    pip安装拓展包--网络超时/Read timed out问题 解决方案:切换镜像源(墙皮太厚) 在后面加上: -i https://pypi.douban.com/simple example: p ...

  5. java.util.concurrent包API学习笔记

    newFixedThreadPool 创建一个固定大小的线程池. shutdown():用于关闭启动线程,如果不调用该语句,jvm不会关闭. awaitTermination():用于等待子线程结束, ...

  6. 【ArrayList】为什么java.util.concurrent 包里没有并发的ArrayList实现?

    2019独角兽企业重金招聘Python工程师标准>>> 为什么java.util.concurrent 包里没有并发的ArrayList实现? 问:JDK 5在java.util.c ...

  7. Java中的包,类的导入,静态导入

    包的作用 1. 为了更好的组织代码,能够将自己的代码与代码库的代码分离. 2. 在需要合作完成的工作中,可以使用分包的方式来尽量的减少类命名的冲突. Sun公司推荐程序员使用公司域名的反向字符作为公司 ...

  8. windows下python依赖包_windows下安装python拓展包

    安装Python集成开发环境IDE 2.IPython:方便今后编译其他扩展库,占用空间92.8M: sudo apt-get install python-dev IPython 为了安装最新版的I ...

  9. 高并发编程基础(java.util.concurrent包常见类基础)

    JDK5中添加了新的java.util.concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法 ...

最新文章

  1. 海淀城市大脑建设单位“中海纪元”调研“智源研究院”
  2. Science:若DTC基因检测达2%成年人群,几乎所有人的身份或将无所遁形
  3. 用C实现动态结构机制
  4. python flask 设置 header 响应体、响应头、状态码
  5. linux shell概述,Linux学习 -- Shell基础 -- 概述
  6. retinajs 使用方法
  7. 【多媒体内容与体验创新】
  8. 地理信息系统论坛_高端论坛西南交通大学朱庆教授:应急测绘智能服务关键技术及重大应用...
  9. java main方法static_在java中为什么要把main方法定义为一个static方法?
  10. centos so查看_照片信息查看器app安卓下载-照片信息查看器app下载v1.1.0 安卓版
  11. Linux Socket学习--面向非连接的协议
  12. 七日Python之路--第十一天
  13. WordPress搬家教程:换空间与换域名
  14. 09月28日 pytorch与resnet(三)预训练的Mask R-CNN 模型进行微调
  15. php float转int 元转分
  16. html项目答辩ppt范文,论文答辩ppt 论文ppt答辩模板|论文答辩ppt范文6页
  17. 日期转换 EEE MMM dd HH:mm:ss zzz yyyy
  18. 每日一练_是程序呀(每日更新)_XML
  19. 十、【Vue-Router】两个新生命周期钩子 activated/deactivated
  20. Python 3 《List》入门练习

热门文章

  1. 使用GDI+实现圆形进度条控件的平滑效果
  2. micropython开发环境_micropython开发者指南
  3. 嘉宾及议程速览,第四范式2021发布会进入一周倒计时
  4. 【Python】Github上125k+Star的Python算法资料
  5. 【深度学习】Yolov5_DeepSort_Pytorch:基于 Yolov5 + Deep Sort 的实时多目标跟踪器
  6. 【机器学习】模型压缩大杀器!详解高效模型设计的自动机器学习流水线
  7. CUDA 编程上手指南:CUDA C 编程及 GPU 基本知识
  8. 个性化推荐系统该如何评估,四种不同策略的角度
  9. ​年底大会火爆,看“瑶台”如何搭建一场高质量沉浸式大会
  10. 如何12个月内成为数据科学家?