当前位置: 首页 > news >正文

Java高级Day51-apacheDBUtils

136.ApDBUtils

基本介绍

  1. commons-dbutils 是 Apache 组织提供的一个开源JDBC工具类库,它是对JJDBC的封装,使用dbutils能极大简化jdbc编码的工作量

  2. QueryRunner类:该类封装了SQL的执行,是线程安全的。可以实现增删改查和批处理

  3. 使用QueryRunner类实现查询

  4. ResultSetHandler接口:该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式

ArrayHandler:把结果集种的第一行数据转成对象数组
ArrayListHandler:把结果集种的每一行数据都转成一个数组,再存放到List中
BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中
BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里
ColumnListHandler:将结果集中某一列的数据存放到List中
KeyedHandler(name):将结果集中的每行数据都封装到Map里,再把这些map再存放到一个map里,其key为指定的ky
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List

ApDBUtils查询

public class DBUtils_USE {//使用apache-DBUtils 工具类 + druid 完成对表的crud操作public void testQueryMany() throws SQLException {//返回结果是多行数据的情况//1.得到 连接 (druid)Connection connection = JDBCUtilsByDruid.getConnection();//2.使用 DBUtils 类和接口,先引入DBUtils相关的jar,加入到本Project//3.创建 QueryRunnerQueryRunner queryRunner = new QueryRunner();//4.就可以执行相关的方法,返回ArrayList 结果集String sql = "select * from actor where id >= ?";//(1)query 方法就是执行sql语句,得到resultset --封装到--> ArrayList 集合中//(2)返回集合//(3)connection:连接//(4)sql:执行的sql语句//(5)new BeanListHandler<>(Actor.class):在将resultset -> Actor 对象 -> 封装到ArrayList//   底层使用反射机制 去获取Actor类的属性,然后进行封装//(6) 1 就是给 sql 语句的 ? 赋值的,可以有多个值,因为是可变参数Object...params//(7)底层得到的resultest,会在 query关闭,关闭 PreparedStatementList<Actor> list = queryRunner.query(connection,sql, new BeanListHandler<>(Actor.class),1);System.out.println("输出这个集合的细腻些");for (Actor actor : List) {System.out.println(actor);}//释放资源JDBCUtilsByDruid.close(null, null, connection);}public void testQuerySingle() throws SQLException {//演示 apache-dbutils + druid 完成 返回的结果是单行记录(单个对象)
​//1.得到 连接 (druid)Connection connection = JDBCUtilsByDruid.getConnection();//2.使用 DBUtils 类和接口,先引入DBUtils相关的jar,加入到本Project//3.创建 QueryRunnerQueryRunner queryRunner = new QueryRunner();//4.就可以执行相关的方法,返回单个 结果集String sql = "select * from actor where id = ?";//因为我们返回的单行记录<--->单个对象,使用的Handler 是 BeanHandlerActor actor = queryRunner.query(connection, sql. new BeanHandler<>(Actor.class),4);System.out.println(actor);
​//释放资源JDBCUtilsByDruid.close(null, null, connection);}//演示apache-dbutils + druid 完成查询结果是单行单列-返回的就是一个Objectpublic void testScalar() throws SQLException {//1.得到 连接 (druid)Connection connection = JDBCUtilsByDruid.getConnection();//2.使用 DBUtils 类和接口,先引入DBUtils相关的jar,加入到本Project//3.创建 QueryRunnerQueryRunner queryRunner = new QueryRunner();//4.就可以执行相关的方法,返回单行单列,返回的就是ObjectString sql = "select name from actor where id = ?";//因为返回的是一个对象,所以收纳柜的 handler 是 ScalarHandlerObject obj = queryRunner.query(connection, sql, new ScalarHandler(), 4);System.out.println(obj);
​//释放资源JDBCUtilsByDruid.close(null, null, connection);}
}

137.ApDBUtilsDML

//演示apache-dbutils + druid 完成 dmlpublic void testDML() throws SQLException {//1.得到 连接 (druid)Connection connection = JDBCUtilsByDruid.getConnection();//2.使用 DBUtils 类和接口,先引入DBUtils相关的jar,加入到本Project//3.创建 QueryRunnerQueryRunner queryRunner = new QueryRunner();//4.组织sql 完成 update, insert , delete//String sql = "update actor set name = ? where id = ?";//String sql = "insert into actor values (null,'赛小息','男','2004-1-1','116')";//String sql = "delete from actor where id = 5";
​//(1) 执行dml 操作是 queryRunner.update()//(2) 返回值是受影响的行数int affectedRow = queryRunner.update(connection, sql, "张三丰", 4);System.out.println(affectedRow > 0 ? "执行成功" : "执行没有影响到表");
​//释放资源JDBCUtilsByDruid.close(null, null, connection);

http://www.mrgr.cn/news/37146.html

相关文章:

  • 基于JAVA+SpringBoot+Vue的健身房管理系统1
  • 【Linux实践】实验九:Shell流程控制语句
  • 实战篇 | VUE3 的安装使用并跑通第一个项目(高效实操版)
  • 【NLP】LSTM结构,原理,代码实现,序列池化
  • SQL_create_view
  • 解释一下Java中的多线程。如何创建一个新的线程?
  • 力扣随机一题——所有元音按顺序排序的最长字符串
  • SRE的必修课:学会看账单
  • LeetCode(Python)-贪心算法
  • STL之vector篇(下)(手撕底层代码,从零实现vector的常用指令,深度剖析并优化其核心代码)
  • c++292类模板
  • 828华为云征文|Flexus云服务器X实例实践:安装SimpleMindMap思维导图工具
  • 【刷题日记】最大不重叠区间的数量 leetcode 435
  • Dockerfile如何使用
  • 【如何学习Python编程?】
  • USB 3.1 Micro-A 与 Micro-B 插头,Micro-AB 与 Micro-B 插座,及其引脚定义
  • 一窥AI大模型奥秘:技术前沿与产业应用双轮驱动
  • Studying-图论包含的算法总结
  • 【VUE】axios组件
  • 绝了,自从用了它,我每天能多摸鱼2小时!