Java高级Day51-apacheDBUtils

devtools/2024/10/21 10:06:16/

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.ppmy.cn/devtools/118536.html

相关文章

架构面试题

架构基础 如何理解架构的演进&#xff1f; 架构的演进指的是随着技术、业务和需求的不断发展&#xff0c;架构在设计和实施上的变化和进化过程。这包括从单体应用向微服务架构的过渡、从传统的服务器部署向云原生架构的转变&#xff0c;以及在数据处理、安全性和性能优化等方…

智慧农业案例 (一)- 自动化机械

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

【STM32】RTT-Studio中HAL库开发教程七:IIC通信--EEPROM存储器FM24C04

文章目录 一、简介二、模拟IIC时序三、读写流程四、完整代码五、测试验证 一、简介 FM24C04D&#xff0c;4K串行EEPROM&#xff1a;内部32页&#xff0c;每个16字节&#xff0c;4K需要一个11位的数据字地址进行随机字寻址。FM24C04D提供4096位串行电可擦除和可编程只读存储器&a…

锦天云中秋之夜团圆家宴圆满成功

2024年9月7日&#xff0c;锦天云&#xff08;深圳&#xff09;计算机设备有限公司 在中国深圳成功举办了“融创智合•月满锦天 锦天云中秋之夜团圆家宴。本次盛会吸引了来自各行业的精英和合作伙伴&#xff0c;大家齐聚一堂&#xff0c;共同庆祝这一传统佳节&#xff0c;此次活…

《深度学习》卷积神经网络 数据增强、保存最优模型 原理解析及实例实现

目录 一、数据增强 1、什么是数据增强 2、目的 3、常用的数据增强方法 4、数据预处理 用法&#xff1a; 5、使用数据增强增加训练数据 二、保存最优模型 1、什么是保存最优模型 2、定义CNN模型 运行结果&#xff1a; 3、设置训练模式 4、设置测试模式、保存最优模…

自然语言处理(jieba库分词)

1、完全切分法、正向最大匹配算法、逆向最大匹配算法和双向最大匹配算法 一、实验内容 一个好的NLP系统一定要有完备的词典&#xff0c;用于判断算法分出的词是否是具有实际意义的词。自定义一个词典&#xff0c;比如dic ["项目", "研究", "目的&q…

Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类

引言 本文基于Python仿真的电能质量扰动信号&#xff0c;先经过数据预处理进行数据集的制作和加载&#xff0c;然后通过Pytorch实现LSTM模型对扰动信号的分类。Python仿真电能质量扰动信号的详细介绍可以参考下文&#xff08;文末附10分类数据集&#xff09;&#xff1a; Pyth…

如何构建鲁棒高性能 Prompt 的方法?

你好&#xff0c;我是三桥君 在当今时代&#xff0c;利用大型语言模型如ChatGPT进行文本生成和交互已成为一种趋势。然而&#xff0c;要充分发挥这些模型的能力&#xff0c;尤其是在生产环境中&#xff0c;我们需要精心设计和优化我们的提示词&#xff08;prompt&#xff09;。…