DBUtils (30)
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就是一个类,在开发中常用封装数据。具有如下特性
- 需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序。
- 提供私有字段:private 类型 字段名;
- 提供getter/setter方法:
- 提供无参构造
/** 账务类*/ 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)相关推荐
- 深度学习(30)随机梯度下降七: 多层感知机梯度(反向传播算法)
深度学习(30)随机梯度下降八: 多层感知机梯度(反向传播算法) 1. 多层感知机模型 2. 多层感知机梯度 3. 传播规律小结 tens Recap Chain Rule Multi-output ...
- Git笔记(30) 重写历史
Git笔记(30) 重写历史 1. 重写历史 2. 修改最后一次提交 3. 修改多个提交信息 4. 重新排序提交 5. 压缩提交 6. 拆分提交 7. 大量修改 7.1. 从每一个提交移除一个文件 7 ...
- 视觉SLAM笔记(30) 特征点法
视觉SLAM笔记(30) 特征点法 1. 特征点法 2. 特征点 3. ORB 特征 3.1. FAST 关键点 3.2. BRIEF 描述子 4. 特征匹配 1. 特征点法 视觉 SLAM 主要分为 ...
- ROS笔记(30) Movelt!配置文件
ROS笔记(30) Movelt!配置文件 1. SRDF 2. 控制器参数 3. 关节限位 4. 运动学求解器 5. 运动规划库 1. SRDF Setup Assistant配置的 机械臂参数.夹 ...
- 深度学习笔记(30) Inception网络
深度学习笔记(30) Inception网络 1. Inception模块 2. 瓶颈层 3. Inception网络 4. Inception网络的细节 1. Inception模块 构建卷积层时 ...
- (30)FPGA米勒型状态机设计(一段式)(第6天)
(30)FPGA米勒型状态机设计(一段式)(第6天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA米勒型状态机设计(一段式)(第6天) 5)技术交流 6 ...
- (30)System Verilog进程间同步(邮箱mailbox)
(30)System Verilog进程间同步(邮箱mailbox) 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog进程间同步(邮箱m ...
- (30)VHDL实现比较器(有符号)
(30)VHDL实现比较器(有符号) 1.1 目录 1)目录 2)FPGA简介 3)VHDL简介 4)VHDL实现比较器(有符号) 5)结语 1.2 FPGA简介 FPGA(Field Program ...
- (30)FPGA原语设计(单端时钟转差分时钟)
(30)FPGA原语设计(单端时钟转差分时钟) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA原语设计(单端时钟转差分时钟) 5)结语 1.2 FPGA简介 F ...
最新文章
- 【设计模式】组合模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
- .net core webapi 列表返回指定的字段_ADO.NET 使用初探之SQL操作 | C# 数据操作系列...
- SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析
- 程序员幽默:老板让明天带条鱼来大家观察
- Linux tty驱动程序一 架构
- [html] 你知道什么是粘性布局吗?
- 如何在UE4中创建线程
- jquery 设置select的默认值
- 一家贩卖8亿份个人简历的公司 现已人去楼空
- 终端会话和孤儿进程组(POSIX-2.2.2.52)--解释问题
- 免费素材下载:学校学院相关图标集
- 磁盘位置_ORACLE RAC ASM磁盘组迁移到新的ASM磁盘组方法
- 批量修改文件夹下所有文件名称
- 地图白话(六):街景地图
- 10bit、8bit色彩深度,究竟差多少?
- 必备配色攻略-绿色篇
- 论文阅读:GeoTransformer
- 计算机电脑Windows系统中了faust勒索病毒,phobos勒索家族介绍,Windows用户注意
- Unity3D网络游戏实战——通用服务器框架
- dvd光驱在计算机内怎么找不到,电脑DVD光驱消失找不到怎么处理