DbUtils的基本用法

commons-dbutils-1.7.jar commons-dbutils-1.7.jar 最新 立即下载

1. 简介

​ 使用 JDBC 时冗余的代码太多了,为了简化开发我们可以选择使用 DbUtils 。

​ Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。

2. 导入Jar包

下载网址:https://mirrors.tuna.tsinghua.edu.cn/apache//commons/dbutils/binaries/commons-dbutils-1.7-bin.zip

下载后解压,复制 commons-dbutils-1.7.jar 文件,导入项目即可。

image-20201219153048176

3. 核心类

3.1 DbUtils类

常用方法:

DbUtils.closeQuietly();  // 它有多种重载可以用于关闭 Connection Statement ResultSet等

3.2 QueryRunner类

构造方法:

QueryRunner();					// 无参构造,需要在使用时提供Connection对象,和自己手动关闭
QueryRunner(DataSource ds);		// 构造方法中给出数据源,查询时不必提供Connection对象,自然也没有关闭操作

一般使用有参构造,在DAO类中声明为成员变量,然后各个方法共用。这样在执行SQL语句时只有一行代码,看起来就很简洁了。

常用方法:

int update([Connection conn, ]String sql,Object... params); // 增 删 改 操作
T query([Connection conn, ]String sql,ResultSetHandler<T> handler,Object... params);
// 查询操作

update()方法很简单,就是传入SQL执行就行了,SQL中有 ?时,SQL之后跟着写上就行,返回值为受影响的行数。

如:

qr.update("update employee set salary=? where id=?",9000,4);  // 把id为4的员工的薪资改为9000

query()方法就是多了个 ResultSerHandler “结果集处理器” ,这是一个接口,作用就是处理结果集,它有多个实现类,也就是多种处理方式,如BeanHandler就是将结果集中的第一行打包成对应的实体类。在使用时只需要根据功能创建并传入所需对象即可。

各实现类的功能如下:

实现类说明
new ArrayHandler()将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
new ArrayListHandler()将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
new BeanHandler<Employee>(Employee.class)将结果集中第一条记录封装到一个指定的javaBean中(这里Employee就是一个实体类)
new BeanListHandler<Employee>(Employee.class)将结果集中指定的列的字段值,封装到一个List集合中
new ScalarHandler<Long>(1)获取结果集第一行,某一列的值。参数可为列名或列号,默认获取第一列数据。
常用来获取 Count( * ) 的结果,但注意它是 long 类型的
new ColumnListHandler(“name”)将结果集中指定的列的字段值,封装到一个List集合中,如本例就是获取name列,也可以传入列号,如果没有参数,默认获取第一列。
new MapHandler()将结果集中第一条记录封装到了Map集合中,key就是字段名称, value就是字段值
new MapListHandler()将结果集中每一条记录封装到了Map集合中,key就是字段名称, value就是字段值,在将这些Map封装到List集合中。
query 的返回值类型为 List<Map<String,Object>>
new KeyedHandler<Integer>(1)将结果集中每一条记录封装到Map,在将这个map集合做为另一个 Map的value,另一个Map集合的key是指定的字段的值。
本例 query 返回值类型为: Map<Integer,Map<String,Object>>
以第一列(id–int类型)为外层Map的key,这样就可以快捷的通过 id 找到每一行数据。

示例:

@Test // BeanHandler
public void test52() throws Exception{
    QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());
    Employee e = qr.query("select * from employee where id=?", new BeanHandler<Employee>(Employee.class), 3);
    System.out.println(e);
}

@Test // ArrayListHandler
public void test70() throws Exception{
    QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());
    List<Object[]> l = qr.query("select * from employee", new ArrayListHandler());
    for(Object[] o : l){
        System.out.println(Arrays.toString(o));
    }
}

关于泛型的一些解释:

​ 可以发现ResultSetHandler接口就是带泛型的,也就是说结果集处理器是支持泛型的,那这有什么用呢?通过查看 query 函数的定义image-20201219171026264可知:query是一个泛型方法,其返回值类型,由参数类型(也就是ResultSetHandler中出入的泛型参数 T)来决定。故:给 ResultSetHandler 指定泛型的作用就是确定返回值类型。

那为什么有些实现类不支持泛型呢?当然就是因为在继承 ResultSetHandler 时就确定了泛型。

如:ArrayHandler 其定义如下:

image-20201219171709958

可以发现 T 被指定为了 Object[] 类型。

还有,

既然传入泛型决定了query的返回值类型,那么BeanHandler为什么还要传入 类型对象 的参数呢?

可知,一定是通过反射机制,为我们分装返回的结果的,要进行反射操作,就要首先获得类的类对象,然而泛型只是在编译期有效,JVM无法通过泛型获取对应的类对象,因为在JVM的世界里就不存在泛型这个东西。所以我们需要手动传入。

4. 实体类

Java中以类对应数据库中的表,每一张表对应一个类,每一列对应类中的一个属性;每一行数据对应一个对象。

这样的类就是实体类,它们需要满足如下条件:

  1. 符合 Java Bean 规范

    1. 需要实现 序列化接口, Serializable (暂时可以省略)
    2. 提供私有字段: private 类型 变量名;
    3. 提供 getter 和 setter
    4. 提供 空参构造
  2. 类中的成员变量名需要与表中的字段名保持一致

    在开发中数据库名很重要,修改不易,所以是 成员变量名 以 表字段 名为准。

    那表字段名又如何设计呢?

    阿里云规范中:

    【强制】表名、字段名必须使用小写字母或数字 , 禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。

    说明: MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免节外生枝。

    正例: aliyun _ admin , rdc _ config , level 3_ name 反例: AliyunAdmin , rdcConfig , level 3 name

commons-dbutils-1.7.rar commons-dbutils-1.7.jar,commons-dbutils-1.7-javadoc.jar,commons-dbutils-1.7-sources.jar,commons-dbutils-1.7-tests.jar,commons-dbutils-1.7-test-sources.jar 立即下载

相关推荐

commons-dbutils-1.7

Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能

将commons-dbutils导入maven本地仓库

第一步:去官网下载commons-dbutils-1.7.jar。第二步:运行cmd进入jar包的路径。成功将该包导入maven本地仓库。第三步:在cmd上执行以下代码。

m0_67402235的博客 2022

Commons-dbutils1.7 jar包.rar

commons-dbutils包是Apache开源组织提供的用于操作数据库的工具包。简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改查了。代码看着也很简洁。 例如: 增删改查使用的类:QueryRunner类+ResultSetHandler类,使用这俩类就可以解决掉。 QueryRunner类的query()方法:new QueryRunner().query(Connection conn, String sql, ResultSetHandler rsh) query方法后面参数中加一个Connection连接,是在获取不到数据源的情况下,也就是说,QueryRunner的实例化构造函数使用无参的那个,下面我的实现代码就是用的这种方法。 当然还有一种实例化:new QueryRunner(new Datasource()).query(String sql, ResultSetHandler rsh) query方法中的参数 ResultSetHandler 参数中加上ResultSetHandler接口的实现类参数(下面这些实现类),执行完SQL后,返回的数据就是已经封装好的我们想要的结果了。 ArrayHandler :将ResultSet中第一行的数据转化成对象数组 ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[] BeanHandler :将ResultSet中第一行的数据转化成Bean对象 BeanListHandler :将ResultSet中所有的数据转化成List ColumnListHandler :将ResultSet中某一列的数据存成List KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map,Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map MapListHandler :将ResultSet中所有的数据存成List<Map> ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object

Javaweb学习笔记(DBUtils工具)

Javaweb学习笔记(DBUtils工具)API介绍DBUtils类 API介绍 DBUtils类 DButils类主要为关闭连接、装载JDBC驱动程序之类的常规工作提供方法,提供的方法都是静态方法。 1.close()方法 在DBUtils类中提供了三个重载的close()方法。这些方法都是 ...

qq_50834939的博客 1960

AI Agent开发实战:100个真实场景题库解析

AI Agent开发涉及复杂的需求理解、架构设计及安全防护等关键技术环节。在工程实践中,开发者常面临需求偏差、系统崩溃等挑战,特别是在金融、医疗等高要求场景下。通过真实案例题库,开发者能系统性地掌握需求分析、架构决策树建模(如向量数据库选型)、安全攻防策略(如提示词注入防御)等核心技能。这些实战经验不仅能提升Agent的可用性和安全性,还能优化其在电商客服、智能家居等场景中的表现。题库采用动态难度系统,覆盖从基础到高级的开发挑战,是AI工程化落地的重要参考。

weixin_29057695的博客 344

UE5深度图与Mask图渲染实战:从基础到高级应用

本文详细解析了在UE5中渲染深度图与Mask图的完整实战流程。从启用电影渲染队列、配置自定义深度模板通道等前期准备,到构建即用型深度图材质网络与精准物体Mask生成,并深入探讨了二者结合在NPR风格化、程序化雾气及AI工作流(如ComfyUI)中的高级应用,为影视、游戏后期与AI创作提供了高效的解决方案。

weixin_29001419的博客 349

DBUtils基本用法

DbUtils是一个非常小的类库,所以不需要花费太长的时间来浏览javadocs中的每个类。DbUtils的核心的类/接口是 QueryRunner和ResultSetHandler。使用这个框架带来的好处是你不需要了解其它类的细节。下面的例子是介绍了如何将这些类一起使用。 //创建一个ResultSetHandle接口的实现来转换数据,将数据放进一个Object //的数组。

ja_II_ck的专栏 1333

别再搞混了!Vue3里xgplayer播放FLV视频与FLV直播流,配置到底差在哪?

本文详细解析了在Vue3项目中使用xgplayer播放FLV视频与FLV直播流的配置差异,帮助开发者避免常见错误。通过对比点播与直播的核心协议差异、插件选择及配置参数,提供实战代码示例和性能优化技巧,确保流畅播放体验。特别针对直播流场景,深入讲解专属配置和问题排查方法。

weixin_28687331的博客 150

关于DBUtils中QueryRunner的基本用法

读取一个Excel文件里面的内容,进行批量插入数据库中;一开始想的是,最基本的操作:遍历一个一个的提交到数据库里面,这样效率太低;用了DBUtils中QueryRunner.batch()方法;参考代码如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; impor...

u013456370的专栏 2666

避坑指南:RK3588上编译EtherCAT 1.6时遇到的权限问题和模块安装错误

本文详细解析了在RK3588平台上编译EtherCAT 1.6时常见的权限问题和模块安装错误,提供了两种实战解决方案和嵌入式开发的通用权限管理策略。通过优化内核配置和编译参数,显著提升实时性能,帮助开发者高效完成EtherCAT主站部署。

weixin_33724046的博客 453

移动通信基础(13)TDL、CDL、信道相关性

参考《U型槽无线信道多径传播特性测量与建模方法的研究》、《5G信号源中的信道模拟与仿真研究》衰落衰落理解为信号幅度在时间和频率上的不断波动,是无线信道一个重要的恶化特性。信道幅度恶化的两个主要来源分别是加性噪声和信号衰落,高斯白噪声信道模型就是典型的加性噪声,信号衰落引起的是乘性的信号扰动,与加性噪声从原理上完全不同。信道的频率选择性衰落组为无线信道的重要特征之一,是人们进行无线系统设计考虑的重要因素,决定了导频隔间的大小。...

tybAly的博客 2万+

Apache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口

Apache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。 A

轻狂年少的博客 334

别再乱调了!Zygo MetroPro软件滤波功能保姆级指南,从均值到鲁棒高斯样条一次讲清

本文深入解析Zygo MetroPro软件的滤波功能,从均值滤波到鲁棒高斯样条等九种算法,帮助用户根据测量对象特性选择最佳滤波组合。通过真实工业案例和参数配置指南,提升光学测量数据的准确性和效率,特别适用于硅晶圆、光学镜片等精密测量场景。

weixin_30888413的博客 156

java延迟加载 dbutils_Apache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口...

Apache—DBUtils框架简介、DbUtils类、QueryRunner类、ResultSetHandler接口commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢API介绍:org.apache.com...

weixin_34206263的博客 147

红米k60 修复“NV损坏” 去除主板校验电阻步骤解析与图示

红米k60 基带代码:mondrian。搭载‌高通骁龙8+ Gen1处理器.国外版本称:POCO F5 Pro适用于以下型号的小米机型:23013RK75C, 23013PC75G。 💝💝💝通过博文了解 1💝💝💝-----此机型修复NV损坏硬件类操作主板图示 2💝💝💝-----了解设备出现NV损坏的底层逻辑 3💝💝💝 ------具体修改步骤

小马哥的专栏 393

PCL 4PCS算法实现点云粗配准【2026最新版】

博客长期更新,本文最新更新时间为:2026年5月11日。

点云侠的博客 30万+

JAVA【Apache-DBUtils实现CRUD】

* 自定义ResultSetHandler的实现类*/@Testtry {";//我们自己定义了一个handler并且重写了其中的方法//其实下面的query的返回值,其实就是我们现在这个当前方法的返回值// return new Customer(12, "成龙", "Jacky@126.com", new Date(234324234324L));}}};}}...

芊樱烛渊的博客 279

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

DbUtils: JDBC Utility Component Examples翻译

DbUtils:JDBC实用组件实例 这一页提供了一些展示如何使用DbUtils的示例。 基本用法 DbUtils是一个非常小的类库,因此浏览完所有类的javadoc不会花费很长时间。DbUtils的核心类/接口是QueryRunner和ResultSetHandler。你不需要知道其它DbUtils类就可以使用这一类库。下面的例子展示了这些类是如何一起使用的。 //...

weixin_34209851的博客 168

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

druid与dbutils集成示例

使用Hibernate的时候觉得它太笨重了,而且还要在学一下HQL,可能不适合一些敏捷项目,小项目.然后就找到了dbutils,觉得还不错.,因此尝试着把druid和dbutils集成在一起.

小李专栏 8311

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Apache Commons DbUtils使用手册

一、介绍 DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是在JDBC的基础上做了一层封装,主要是对结果集的封装,可以直接将查询出来的结果集封装成JavaBean,旨在简化JDBC代码混乱与重复。 JDBC代码开发,存在很多难点: 1)操作过程复杂,代码操作一个模式,大量的重复。 2)结果集难以处理。 3)到处都强制检查SQLException,影响代码的美观和可读

pdw2009的专栏 968

dbutils mysql 查询_DbUtils

软件简介原则上这不能说是一个持久层框架,它提供了一些Jdbc的操作封装来简化数据查询和记录读取操作。本站就是采用这个项目来读写数据库,代码非常简洁,如果你厌烦了Hibernate的庞大,不妨可以试试——DbUtils。给出一小段代码看看DbUtils是怎么用的:QueryRunnerrun=newQueryRunner(dataSource);//UsetheBeanHandler...

weixin_31293685的博客 155

DBUtils简单使用

菜鸟出道,斗胆写博,如有错误,欢迎指正。概述DBUtils封装了数据库的操作,简化了数据库操作的代码量。准备将DBUtils和JDBC的jar包导入到工程即可使用 DBUtils jar包下载链接 JDBC jar包下载链接 QueryRunner类 常用的构造器 public QueryRunner() public QueryRunner(DataSource ds) 常用的方法 // 查

小菜虾的专栏 628

xUtils中的dbUtils中,在应用升级的时候修改表结构

们在做数据缓存的时候经常用到数据库,数据库在进行存储的时候特别灵活也比较简单。虽然好用,但是存在一个问题,就是我们的应用在进行迭代的时候可能随着需求的变化,我们需要对表结构进行修改(一般是添加字段),这就需要我们在进行应用升级的时候,改变表结构,这样就面临一个问题,由于新表和旧表不一致,可能在存储时发生一些异常导致应用崩溃。大多数应用的解决办法是,在升级的时候,将之前所建的表删除然后重建,这样是不

u012176204的博客 500

DBUtils实现CURD操作

1.Apache-DBUtils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。 API介绍: org.apache.commons.dbutils.QueryRunner org.apache.commons.dbutils.ResultSetHandler 工具类:org.apache.commons.dbutils.DbUtils 2.主要AP

m0_51661220的博客 101

DbUtils: JDBC Utility Component Examples

DbUtils: JDBC Utility Component ExamplesThis page provides examples that show how DbUtils may be used. Basic UsageDbUtils is a very small library of classes so it wont take long to go throu

Agile的专栏 852
上一篇: 数据库连接池-DBCP、C3P0、Druid
下一篇: Java操作XML
贫僧法华
博客等级 码龄6年 28粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值