DBUtils是java编程中的数据库操作实用工具,小巧简单实用。

DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

Dbutils三个核心功能介绍

一、  QueryRunner中提供对sql语句操作的API.

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

三、  DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

1、DBUtils就是JDBC的简化开发工具包。需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具。DBUtils是apache commons组件的一个成员。

2、 QueryRunner实现插入操作。 // update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

public void insert(){try {//获取一个用来执行SQL语句的对象   QueryRunnerQueryRunner qr = new QueryRunner();String sql = "INSERT INTO zhangwu(name,money,parent) VALUES(?,?,?)";Object[] params = {"股票收入", 5500, "收入"};Connection conn = JDBCUtils.getConnection();int line = qr.update(conn,sql,params);// 用来完成表数据的增加、删除、更新操作 返回值是更新的条数
//结果集处理 System.out.println("line = " + line); } catch (SQLException e) { throw new RuntimeException(e); } }

3、QueryRunner实现更新: // update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

public void update(){try {//创建一个QueryRunner对象,用来完成SQL语句的执行QueryRunner qr = new QueryRunner();//执行SQL语句String sql = "UPDATE zhangwu SET money = money+1000 WHERE name=?";Object[] params = {"股票收入"};Connection conn = JDBCUtils.getConnection();int line = qr.update(conn, sql, params);//结果集的处理System.out.println("line="+line);} catch (SQLException e) {throw new RuntimeException(e);}
}

4、QueryRunner实现删除: //  update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

public void delete(){try {//创建一个QueryRunner对象,用来完成SQL语句的执行QueryRunner qr = new QueryRunner();//执行SQL语句String sql = "DELETE FROM zhangwu WHERE name = ?";Object[] params = {"股票收入"};Connection conn = JDBCUtils.getConnection();int line = qr.update(conn, sql, params);//结果集的处理System.out.println("line="+line);} catch (SQLException e) {throw new RuntimeException(e);}
}

5、QueryRunner实现查询操作   //  query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作

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

  1. 需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序。
  2. 提供私有字段:private 类型 字段名;
  3. 提供getter/setter方法:
  4. 提供无参构造
/** 账务类*/
public class ZhangWu {private int id;private String name;private double money;private String parent;public ZhangWu() {super();}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}public String getParent() {return parent;}public void setParent(String parent) {this.parent = parent;}@Overridepublic String toString() { //该方法可以省略return "ZhangWu [id=" + id + ", name=" + name + ", money=" + money + ", parent=" + parent + "]";}
}

6、 ArrayHandler与ArrayListHandler查询

//  ArrayHandler:将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

public class ArrayHandlerDemo {@Testpublic void method(){try {//获取QueryRunner对象QueryRunner qr = new QueryRunner();//执行SQL语句String sql = "SELECT * FROM zhangwu";Object[] params = {};Connection conn = JDBCUtils.getConnection();Object[] objArray = qr.query(conn, sql, new ArrayHandler(), params);//结果集的处理
            System.out.println( Arrays.toString(objArray) );conn.close();} catch (SQLException e) {e.printStackTrace();}}
}

//  ArrayListHandler:将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

public class ArrayListHandlerDemo {@Testpublic void method(){try {//获取QueryRunner对象QueryRunner qr = new QueryRunner();//执行SQL语句String sql = "SELECT * FROM zhangwu WHERE money>?";Object[] params = {2000};Connection conn = JDBCUtils.getConnection();List<Object[]> list = qr.query(conn, sql, new ArrayListHandler(), params);//结果集的处理for (Object[] objArray : list) {System.out.println(  Arrays.toString(objArray) );}conn.close();} catch (SQLException e) {e.printStackTrace();}}
}

7、 BeanHandler与BeanListHandler查询

//  BeanHandler :将结果集中第一条记录封装到一个指定的javaBean中。

public class BeanHandlerDemo {@Testpublic void method(){try{//获取QueryRunner QueryRunner qr = new QueryRunner();//执行SQL语句String sql = "SELECT * FROM zhangwu WHERE id=?";Object[] params = {1};Connection conn = JDBCUtils.getConnection();ZhangWu zw = qr.query(conn, sql, new BeanHandler<ZhangWu>(ZhangWu.class), params);//结果集处理
            System.out.println(zw);conn.close();} catch(SQLException e){throw new RuntimeException(e);}}
}

//  BeanListHandler :将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

public class BeanListHandlerDemo {@Testpublic void method(){try{//获取QueryRunner QueryRunner qr = new QueryRunner();//执行SQL语句String sql = "SELECT * FROM zhangwu WHERE money>?";Object[] params = {2000};Connection conn = JDBCUtils.getConnection();List<ZhangWu> list = qr.query(conn, sql, new BeanListHandler<ZhangWu>(ZhangWu.class), params);//结果集处理for (ZhangWu zw : list) {System.out.println(zw);}conn.close();} catch(SQLException e){throw new RuntimeException(e);}}
}

8、ColumnListHandler与ScalarHandler查询

// ColumnListHandler:将结果集中指定的列的字段值,封装到一个List集合中

public class ColumnListHandlerDemo {@Testpublic void method(){try {//获取QueryRunner对象QueryRunner qr = new QueryRunner();//执行SQL语句String sql = "SELECT name FROM zhangwu WHERE money>?";Object[] params = {2000};Connection conn = JDBCUtils.getConnection();List<String> list = qr.query(conn, sql, new ColumnListHandler<String>(), params); //结果集的处理for (String str : list) {System.out.println(str);}conn.close();} catch (SQLException e) {e.printStackTrace();}}
}

// ScalarHandler:它是用于单数据。例如select count(*) from 表操作。

public class ScalarHandlerDemo {@Testpublic void method(){try {//获取QueryRunner对象QueryRunner qr = new QueryRunner();//执行SQL语句String sql = "SELECT MAX(money) FROM zhangwu";Object[] params = {};Connection conn = JDBCUtils.getConnection();Double max = qr.query(conn, sql, new ScalarHandler<Double>(), params);//结果集的处理System.out.println("max=" + max);conn.close();} catch (SQLException e) {e.printStackTrace();}}
}

转载于:https://www.cnblogs.com/ivan5277/p/10082878.html

DBUtils (30)相关推荐

  1. 深度学习(30)随机梯度下降七: 多层感知机梯度(反向传播算法)

    深度学习(30)随机梯度下降八: 多层感知机梯度(反向传播算法) 1. 多层感知机模型 2. 多层感知机梯度 3. 传播规律小结 tens Recap Chain Rule Multi-output ...

  2. Git笔记(30) 重写历史

    Git笔记(30) 重写历史 1. 重写历史 2. 修改最后一次提交 3. 修改多个提交信息 4. 重新排序提交 5. 压缩提交 6. 拆分提交 7. 大量修改 7.1. 从每一个提交移除一个文件 7 ...

  3. 视觉SLAM笔记(30) 特征点法

    视觉SLAM笔记(30) 特征点法 1. 特征点法 2. 特征点 3. ORB 特征 3.1. FAST 关键点 3.2. BRIEF 描述子 4. 特征匹配 1. 特征点法 视觉 SLAM 主要分为 ...

  4. ROS笔记(30) Movelt!配置文件

    ROS笔记(30) Movelt!配置文件 1. SRDF 2. 控制器参数 3. 关节限位 4. 运动学求解器 5. 运动规划库 1. SRDF Setup Assistant配置的 机械臂参数.夹 ...

  5. 深度学习笔记(30) Inception网络

    深度学习笔记(30) Inception网络 1. Inception模块 2. 瓶颈层 3. Inception网络 4. Inception网络的细节 1. Inception模块 构建卷积层时 ...

  6. (30)FPGA米勒型状态机设计(一段式)(第6天)

    (30)FPGA米勒型状态机设计(一段式)(第6天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA米勒型状态机设计(一段式)(第6天) 5)技术交流 6 ...

  7. (30)System Verilog进程间同步(邮箱mailbox)

    (30)System Verilog进程间同步(邮箱mailbox) 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog进程间同步(邮箱m ...

  8. (30)VHDL实现比较器(有符号)

    (30)VHDL实现比较器(有符号) 1.1 目录 1)目录 2)FPGA简介 3)VHDL简介 4)VHDL实现比较器(有符号) 5)结语 1.2 FPGA简介 FPGA(Field Program ...

  9. (30)FPGA原语设计(单端时钟转差分时钟)

    (30)FPGA原语设计(单端时钟转差分时钟) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA原语设计(单端时钟转差分时钟) 5)结语 1.2 FPGA简介 F ...

最新文章

  1. 【设计模式】组合模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  2. .net core webapi 列表返回指定的字段_ADO.NET 使用初探之SQL操作 | C# 数据操作系列...
  3. SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析
  4. 程序员幽默:老板让明天带条鱼来大家观察
  5. Linux tty驱动程序一 架构
  6. [html] 你知道什么是粘性布局吗?
  7. 如何在UE4中创建线程
  8. jquery 设置select的默认值
  9. 一家贩卖8亿份个人简历的公司 现已人去楼空
  10. 终端会话和孤儿进程组(POSIX-2.2.2.52)--解释问题
  11. 免费素材下载:学校学院相关图标集
  12. 磁盘位置_ORACLE RAC ASM磁盘组迁移到新的ASM磁盘组方法
  13. 批量修改文件夹下所有文件名称
  14. 地图白话(六):街景地图
  15. 10bit、8bit色彩深度,究竟差多少?
  16. 必备配色攻略-绿色篇
  17. 论文阅读:GeoTransformer
  18. 计算机电脑Windows系统中了faust勒索病毒,phobos勒索家族介绍,Windows用户注意
  19. Unity3D网络游戏实战——通用服务器框架
  20. dvd光驱在计算机内怎么找不到,电脑DVD光驱消失找不到怎么处理

热门文章

  1. 前端实现mac笔记本停靠栏效果
  2. Hibernate之对象关系映射文件
  3. C++模板:模板简述,函数模板详细说明【C++模板】(56)
  4. JavaScript中Console的9个常用调试命令
  5. Linux 系统的备份恢复
  6. 轻松构建基于 Serverless 架构的小程序
  7. php麻将机器人ai算法,高性能麻将AI算法
  8. Postman响应断言
  9. Cookie和Session区别
  10. java 下雪_如何用JAVA实现下雪场景