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语句的对象 QueryRunner QueryRunner 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; } @Override public String toString() { //该方法可以省略 return "ZhangWu [id=" + id + ", name=" + name + ", money=" + money + ", parent=" + parent + "]"; } }
6、 ArrayHandler与ArrayListHandler查询
// ArrayHandler:将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
public class ArrayHandlerDemo { @Test public 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 { @Test public 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 { @Test public 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 { @Test public 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 { @Test public 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 { @Test public 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(); } } }
相关文章
- LLM-数据集:30个大语言模型训练相关的数据集【Pile(825 GiB)】
- 异常检测:PyOD工具库(含SUOD库)【包括近30种常见的异常检测算法:ABOD、HBOS、IForest、KNN、LOF、OCSVM、PCA等】【Outlier detection (OD) 】
- work like Alibaba,不如 work at Alibaba!阿里云客户服务部30+职位开放中,快来一起飞吧!
- 雅虎10亿泄漏数据在暗网出售:30万美元
- 从事Python自动化测试,30岁熬到月薪20K+,分享我的多年面试经…
- 年薪30万,达到人生巅峰,入职字节一个月,我却被无情碾压
- “品、智”双驱 联迪商用APOS智能终端突破30万大关
- 30个开源电子商务系统(PHP)
- 垂涎欲滴!30个美味的食品类移动应用程序【下篇】
- 30个美丽干净的,帮助用户专注于内容的网站设计
- 第30课:集群运行模式下的Spark Streaming日志和Web监控台实战演示彻底解密
- LeakCanary,30分钟从入门到精通
- msql 根据时间戳查询30天以前的所有订单 myql时间戳字符串与时间格式转换
- 大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day07】——Hbase1