DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
Dbutils三个核心功能介绍

  • QueryRunner中提供对sql语句操作的API.
  • ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
  • DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

QueryRunner

1. 提供数据源

1.1 构造方法
QueryRunner(DataSource) 创建核心类,并提供数据源,内部自己维护Connection
1.2 普通方法
update(String sql , Object … params) 执行DML语句
query(String sql , ResultSetHandler , Object … params) 执行DQL语句,并将查询结果封装到对象中。

2. 提供连接

2.1 构造方法
QueryRunner() 创建核心类,没有提供数据源,在进行具体操作时,需要手动提供Connection
2.2 普通方法
update(Connection conn , String sql , Object … params) 使用提供的Connection,完成DML语句
query(Connection conn , String sql , ResultSetHandler , Object … params) 使用提供的Connection,执行DQL语句,并将查询结果封装到对象中。

3. 增删改查

3.1 增

public void insert() throws SQLException{//将sql和实际参数 进行抽取//1 核心类QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());//2 执行update方法String sql = "insert into product(pid,pname,price,category_id) values(?,?,?,?)";Object[] params = { 990,"测试",100,"c009" };int r = queryRunner.update(sql,params);}

3.2 更新

 public void update() throws SQLException{//1 核心类QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());//2 准备sql语句String sql = "update product set pname=?,price=?,category_id=? where pid=?";//3 准备实际参数Object[] params = {"芒果99","998","c009",13};//4 执行int r = queryRunner.update(sql, params);}

3.3 删除

public void delete() throws SQLException{QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "delete from product where pid = ?";Object[] params = {99};int r = queryRunner.update(sql, params);}

3.4 查找 query(String sql, ResultSetHandler rsh, Object… params)

3.4.1 ResultSetHandler结果集处理类


JavaBean就是一个类,在开发中常用语封装数据。具有如下特性

  1. 需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序。
  2. 提供私有字段:private 类型 字段名;
  3. 提供getter/setter方法:
  4. 提供无参构造
  1. BeanHandler
/*** 查询数据表结果集处理其中一种方式:*   BeanHandler处理方式*     将数据表的结果集第一行数据,封装成JavaBean类的对象*   构造方法:*     BeanHandler(Class<T> type) *     传递一个Class类型对象,将结果封装到哪个类的对象呢*     ZhangWu类的Class对象*/@Testpublic void demo01() throws SQLException{// 通过id查询详情,将查询结果封装到JavaBean product//1核心类 QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());//2 sql语句String sql = "select * from product where pid = ?";//3 实际参数Object[] params = {6};//4 查询并封装Product product = queryRunner.query(sql, new BeanHandler<Product>(Product.class), params);System.out.println(product);}
  1. BeanListHandler.
/*** 查询数据表结果集处理其中一种方式:*   BeanListHandler处理方式*     将数据表的每一行数据,封装成JavaBean类对象*     多行数据了,多个JavaBean对象,存储List集合*/@Test public void demo02() throws SQLException{//查询所有,将每一条记录封装到一个JavaBean,然后将JavaBean添加到List中,最后返回List,BeanListHandlerQueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "select * from product";Object[] params = {};List<Product> list = queryRunner.query(sql, new BeanListHandler<Product>(Product.class), params);for(Product product : list){System.out.println(product);}}
  1. ScalarHander
/*** 查询数据表结果集处理其中一种方式:*    ScalarHandler处理方式*     处理单值查询结果,执行的select语句后,结果集只有1个*/@Test public void demo03() throws SQLException{// ScalarHandler : 用于处理聚合函数执行结果(一行一列)// * 查询总记录数QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "select count(*) from product";Long obj = queryRunner.query(sql, new ScalarHandler<Long>());//System.out.println(obj.getClass());System.out.println(obj);}
  1. MapHandler
/*** 查询数据表结果集处理其中一种方式:*   MapHandler处理方式*     将数据表结果集的第一行数据,封装成Map集合*   键: 数据表中的列*   值: 这个列中的数据*   *   处理方式的Map集合,是LinkedHashMap的子类*/@Test public void demo04() throws SQLException{// MapHandler : 将查询到的一条记录,封装到Map中,map.key=字段名,map.value=值// * 主要用途:多表操作、将数据转换json 等QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "select * from product where pid = ?";Object[] params = {6};Map<String,Object> map = queryRunner.query(sql, new MapHandler(), params);System.out.println(map);// 将Map数据封装到指定JavaBean}
  1. MapListHandler
/*** 查询数据表结果集其中一种处理方式:*   MapListHandler处理方式*     将数据表的结果集的每一行封装成Map集合*     数据表多行数据,出现多个Map集合,存储List集合*/@Test public void demo05() throws SQLException{// MapListHandler : 查询所有数据,将每一条记录封装到Map中,然后将Map添加到List中,最后返回List// * 主要用途:多表操作 等QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "select * from product";List<Map<String,Object>> list = queryRunner.query(sql, new MapListHandler());for(Map<String,Object> map : list){System.out.println(map);}}
  1. ArrayHandler
/***  查询数据表结果集处理其中一种方式:*  ArrayHandler处理方式*    将数据表中的第一行数据,存储到对象数组Object[]中*  *  注意: 获取查询后的第一行数据,如果查询不到结果集,返回的对象数组的length=0*/@Test public void demo06() throws SQLException{// ArrayHandler :查询一条记录,将数据封装到数组中QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "select * from product where pid = ?";Object[] params = {6};Object[] arr = queryRunner.query(sql, new ArrayHandler(), params);System.out.println(arr);System.out.println(Arrays.toString(arr));}
  1. ArrayListHandler
/*** 查询数据表结果集处理其中一种方式:* ArrayListHandler处理方式*  将数据表中的每一行数据,存储到一个对象数组Object[]中*  而数据表中会有多行数据,产生多个对象数组, 存储到List集合中*/@Test public void demo07() throws SQLException{// ArrayListHandler :查询所有,将每一条记录封装到数组中,然后添加到List,最后返回listQueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "select * from product";List<Object[]> list = queryRunner.query(sql, new ArrayListHandler());for(Object[] arr : list){System.out.println(Arrays.toString(arr));}}
  1. KeyedHandler
@Test public void demo08() throws SQLException{// KeyedHandler : new KeyedHandler("字段名称"),查询所有,将查询结果封装到Map中// * map.key=为指定“字段名称”对应的值// * map.value=为当前整条记录所有的值,数据为Map<字段名,值>// 类型  Map<String , Map<String,Object> >QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "select * from product";Map<String,Map<String,Object>> map = queryRunner.query(sql, new KeyedHandler<String>("pname"));for(Map.Entry<String, Map<String,Object>> entry : map.entrySet()){System.out.println(entry.getKey());System.out.println(entry.getValue());}}
  1. ColumnListHandler
/*** 查询数据表结果集处理其中一种方式:*   ColumnListHandler处理方式*     将查询数据表结果集中的某一列数据,存储到List集合*     哪个列不清楚,数据类型也不清楚, List<Object>*  ColumnListHandler构造方法*    空参数: 获取就是数据表的第一列*    int参数: 传递列的顺序编号*    String参数: 传递列名*    *  创建对象,可以加入泛型,但是加入的数据类型,要和查询的列类型一致*/@Test public void demo09() throws SQLException{// ColumnListHandler : 查询指定一列数据QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());String sql = "select * from product";List<String> list = queryRunner.query(sql, new ColumnListHandler<String>("pname"));System.out.println(list);}

DBUtils工具类相关推荐

  1. DbUtils工具类使用

    2019独角兽企业重金招聘Python工程师标准>>> DbUtils工具类使用 创建数据库 CREATE TABLE `student` (`userId` int(11) NOT ...

  2. java druid jdbc例子_JDBC【使用Druid连接数据库,DBUtils工具类的使用】

    Druid连接数据库,DBUtils工具类的使用 1.在maven中添加Druid依赖 com.alibaba druid 1.2.0 2.封装Druid连接方法 import com.alibaba ...

  3. java dbutils工具类_DbUtils工具类使用

    DbUtils工具类使用 创建数据库 CREATE TABLE `student` ( `userId` int(11) NOT NULL, `userName` varchar(30) NOT NU ...

  4. 30_java之DButils工具类

    01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类* a: 概述* DBUtils是java编程中的数据库操作实用工具,小巧简单实用.* DBUtils封装了 ...

  5. DBUtils工具类实现增删改查

    DBUtils工具类实现增删改查 一.数据库连接池Druid工具类 二.DBUtils实现增删改 三.DBUtils实现查询单条数据 四.DBUtils实现查询批量数据 五.DBUtils实现按键值对 ...

  6. Apache DbUtils工具类初学

    下载jar包:(Linux下载1,Windows下载2) http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi A ...

  7. dbutils java_Dbutils工具类的使用

    一.什么是Dbutils? Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能.来源百度百科 ...

  8. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. 连接数据库时常用的工具类(一)-------C3P0XmlUtils

    工具类一:C3P0XmlUtils 使用前应先把c3p0-config.xml 文件导入到Src的根目录下,如下图 下面为C3P0XmlUtils工具类: package cn.kgc.c3p0_xm ...

  10. JDBC连接池与工具类

    1.连接池概述 用池来管理Connection,这样可以重复使用Connection,有了池,所以我们就不用自己来创建Connection, 而是通过池来获取Connection对象,当使用完Conn ...

最新文章

  1. B1054 求平均值 (20 分)
  2. python画图简单代码-用python进行简单的画图操作
  3. web02--jsp数据传递
  4. scikit-learn 朴素贝叶斯类库使用小结
  5. 使用BeanUitls提高对象拷贝效率
  6. golang常用手册:数据类型、变量和常量
  7. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第3节 maven标准目录结构和常用命令_07maven常用命令...
  8. STC单片机使用RS485下载程序方法
  9. ArcGIS Server 发布 REST 服务
  10. idea安装及配置Tomcat
  11. 使用GSM6315模块,采用http或者https协议与服务器通信笔记
  12. PyScripter的下载
  13. 千图成像(用图片拼图片)的java教程
  14. 1383:刻录光盘(cdrom)
  15. 编程小白必懂的网络原理
  16. [转]驾驭你的“职场布朗运动”
  17. 用python的tkinter做游戏(五)—— 魔塔 篇
  18. html实现开心消消乐小游戏
  19. Qt音乐播放器实现(带歌词功能)
  20. 面对电信运营商HTTP劫持如何是好,投诉太折腾,不如路由器直接屏蔽广告源

热门文章

  1. 不能创建对象qmdispatch_ActiveX部件不能创建对象的终极解决方案
  2. ubuntu下各种软件下载
  3. ITK VKT 安装-详细
  4. JMeter接口压力测试实战教程
  5. 重磅开源:带屏幕LCD脱机下载器离线下载器!
  6. 启发式搜索--八数码问题
  7. 如何批量给 Word、Excel、PDF、PPT 文档设置文件打开密码和删除密码
  8. 无捆绑绿色安装金山打字通教程
  9. OpenCV 文字识别(一):图像预处理
  10. 一位业余爱好者花两年时间完成的STM32H7掌上电脑(软硬件开源)