1、关于数据库连接池

连接池就是创建和管理一个连接缓冲池的技术,这些连接好被任意线程所使用,数据库连接池负责分配和管理、释放数据库连接,总而言之数据库连接池就是提高对数据库的操作性能。

数据库连接池:

(1)JNDI连接池:是早期Java名称目录接口,一种数据库连接池技术

(2)DBCP:通过JNDI调用

(3)Druid:由国内阿里巴巴开发的一种连接池技术,可提高sql语句的执行效率,性能好

(3)C3P0:是一个开放源代码的JDBC连接池

2、数据库连接池的使用(Druid为准)

(1)创建属性文件放到源代码文件夹下,可以任意后缀名结尾,这里推荐txt方便打开

基本配置:
driverClassName=com.mysql.jdbc.Driver //加载驱动类
url=jdbc:mysql://localhost:3306/test //数据库连接URL
username=root //数据库用户名
password= //数据库密码
initialSize= //初始化连接池个数
maxActive= //最大连接池个数

(2)创建自定义DBTools类

public class DBTools{
public static DataSource ds; //创建数据源文件
static{
Properties properties = new Properties(); //属性文件对象
try{
//加载属性文件
properties.load(DBTools.class.getResourceAsStream("/druid.txt"));
//把这个属性文件赋给ds
ds=DruidDataSourceFactory.createDataSource(properties);
}catch(Exception e){
e.printStatckTrace();
}
}
}

(3)创建公共Query对象实体类(整个数据库操作依赖QueryRunner)

public class BaseDao{
public QueryRunner query; //创建对象
public BaseDao(){ //谁调用我就使用
query=new QueryRunner(DBTools.ds);
}
}

3、DBUtils的使用

DBUtils:简单的说DBUtils就是封装了JDBC的代码,简化了dao层的操作,提高工作的效率

使用DBUtils

(1)导入jar包:mysql驱动、数据库连接池jar包、DBUtils工具jar包

(2)创建属性配置文件

(3)自定义DBTools工具类,方便连接

4、DBUtils的API

query(sql,ResultSetHander<T>rsh,Object ... params)    //查询操作,返回一个有关泛型的集合,可添加参数,也可没有

update(String sql,Object ... params)     //数据库增删改操作,参数为sql语句和任何类型的参数

常用方法介绍:

(1)BeanHandler:将查询的第一行数据封装到user对象

(2)BeanListHandler:将查询的每一行数据封装到user对象,然后存入到list集合中

使用:return query.query(sql,new BeanListHandler<Student>(Student.class));

注意:必须指明类名

(3)ScalarHandler:返回的Long类型,适用于对象聚合函数的查询,count,max,avg,min,sum

使用:

String sql = "select count(1) from student";

return query.query(sql,new ScalarHandler<Long>())

关于连接池和DBUtils的更多相关文章

  1. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

    前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在 ...

  2. 【知了堂学习心得】浅谈c3p0连接池和dbutils工具类的使用

    1. C3P0概述 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. 2. C3P ...

  3. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...

  4. day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)

    day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbuti ...

  5. 【转】【很全很新】C3P0 连接池和 DBUtils 配合事务使用总结

    [转]https://blog.csdn.net/guozhaohui628/article/details/84793028 很久没用原生连接池,最近想写个小功能,结果发现很多地方不太懂,然后网上搜 ...

  6. 我的学习之路_第二十一章_JDBC连接池

    JDBC连接池和DButils [DBCP连接池工具类] 使用读取配置文件的方式 DBCP中有一个工厂类 BasicDataSourceFactory 工厂类中有一个静态方法 返回值为: DataSo ...

  7. JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作

    1 JNDI和在tomcat中配置DBCP连接池 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.namin ...

  8. 【JAVAWEB学习笔记】10_JDBC连接池&DBUtils

    使用连接池改造JDBC的工具类: 1.1.1          需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...

  9. Java基础学习笔记二十七 DBUtils和连接池

    DBUtils 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils.DBUtils就是JDBC的简化开发 ...

随机推荐

  1. java数据结构4--集合Set

    Set接口 Set接口用来表示:一个不包含“重复元素”的集合Set接口中并没有定义特殊的方法,其方法多数都和Collection接口相同. 重复元素的理解:通常理解:拥有相同成员变量的对象称为相同的对 ...

  2. Django 的 CBV&FBV

    Django FBV, function base view  视图里使用函数处理请求 url 1 url(r‘^users/‘, views.users), views 1 2 3 4 5 from ...

  3. 【POJ2992】Divisors

    [题目概括] 计算\(C_n^k\)的因子个数. [思路要点] 首先考虑将组合数展开,展开后就是\(\frac {n!}{k!\times (n-k)!}\). 这样就是计算出这些质因子的个数,然后将 ...

  4. 【canvas学习笔记五】使用图片

    在canvas里画图有两个步骤: 获得图片源. drawImage()画图. 图片源 canvas支持以下几种图片资源: HTMLImageElement 可以使用Image()方法构造的图片,也可以 ...

  5. 【技术分享:python 应用之二】解锁用 VSCode 写 python 的正确姿势

    之前一直用 notepad++ 作为编辑器,偶然发现了 VScode 便被它的颜值吸引.用过之后发现它启动快速,插件丰富,下载安装后几乎不用怎么配置就可以直接使用,而且还支持 markdown.当然, ...

  6. Android图片上传(头像裁切+原图原样)

    下面简单铺一下代码: (一)头像裁切.上传服务器(代码) 这里上边的按钮是头像的点击事件,弹出底部的头像选择框,下边的按钮跳到下个页面,进行原图上传. ? 1 2 3 4 5 6 7 8 9 10 1 ...

  7. ORA-01034、ORA-27101、ORA-00119错误

    ORA-01034ORA-27101Linux-x86_64 Error: 2:No such file or directory. 或者是 ORA-00119: invalid specificat ...

  8. Java中创建String的两种方式

    1.在Java中,创建一个字符串有两种方式 String x = "abc";String y = new String("abc"); 这两种方式有什么区别呢 ...

  9. 配置Nginx和Apache允许指定域名CORS跨域访问

    前后端分离开发,导致前端项目需要跨域请求后端接口,解决方法有很多,本文只介绍两个: 1. 修改后端程序代码实现允许跨域请求 2. 修改服务器配置文件实现允许跨域请求 正文: 方法1:修改后端程序代码实 ...

  10. gdb break 断点设置

    http://sourceware.org/gdb/current/onlinedocs/gdb/ 断点设置 gdb断点分类: 以设置断点的命令分类: breakpoint 可以根据行号.函数.条件生 ...