Jakarta DBUtils使用demo

工业互联网工控安全与工业质检AI大模型建设方案.pptx 立即下载
<pre code_snippet_id="297974" snippet_file_name="blog_20140417_1_3464688" name="code" class="java">在使用DBUtils之前,应该注意一些问题:
 
1、DBUtils是JDBC的简单封装,可以和JDBC混合使用。
 
2、DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表结果集列名一一对应。
比如:
person表中有个字段叫:address,那么对应的JavaBean的Person类中必须有getAddress和setAddress两个方法,而Person类中可以将address属性命名为add,这是没问题的。
 
3、DBUtils可以将结果集封装为各种类型,主要有:Bean/List<Bean>,Map/List<Map>/Map<Map>,数组/List<数组>,列/List<列>,这些类型。

<h5>
</h5>

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

public class DBUtilsDemo {

	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws ClassNotFoundException {

		Glue glue = new Glue();

		Connection conn = null;
		String jdbcURL = "jdbc:sqlserver://localhost:1433;DatabaseName=xjyglxt";
		String jdbcDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
		try {
			DbUtils.loadDriver(jdbcDriver);
			conn = DriverManager.getConnection(jdbcURL, "sa", "ctgusec");
			conn.setAutoCommit(false);// 关闭自动提交
			QueryRunner qRunner = new QueryRunner();

			// 以下部分代码采用MapHandler存储方式查询,将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
			System.out.println("***Using MapHandler***");
			Map map = (Map) qRunner.query(conn,
					"select * from glue where id = ?", new MapHandler(),
					new Object[] { 5 });

			System.out.println("id ------------- type ");
			System.out.println(map.get("id") + " ------------- "
					+ map.get("type"));

			// 以下部分代码采用MapListHandler存储方式查询,将结果集中的每一行数据都封装到一个Map里,然后再存放到List
			System.out.println("***Using MapListHandler***");
			List lMap = (List) qRunner.query(conn, "select * from glue",
					new MapListHandler());

			System.out.println("id ------------- type ");
			for (int i = 0; i < lMap.size(); i++) {
				Map vals = (Map) lMap.get(i);
				System.out.println(vals.get("id") + " ------------- "
						+ vals.get("type"));
			}
			
			
			// 以下部分代码采用BeanHandler存储方式查询,将结果集中的第一行数据封装到一个对应的JavaBean实例中
			System.out.println("***Using BeanHandler***");
			glue = (Glue) qRunner.query(conn,
					"select * from glue where id = ?",
					new BeanHandler(Class.forName("com.cdw.dbutils.Glue")),
					new Object[] { "5" });
			System.out.println("id ------------- type ");
			System.out.println(glue.getId() + " ------------- "
					+ glue.getType());
			
			// 以下部分代码采用BeanListHandler存储方式查询,将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里
			System.out.println("***Using BeanListHandler***");
			List lBean = (List) qRunner.query(conn, "select * from glue",
					new BeanListHandler(Class.forName("com.cdw.dbutils.Glue")));
			System.out.println("id ------------- type ");
			for (int i = 0; i < lBean.size(); i++) {
				glue = (Glue) lBean.get(i);
				System.out.println(glue.getId() + " ------------- "
						+ glue.getType());
			}
			
			// 以下部分代码采用ArrayHandler存储方式查询,把结果集中的第一行数据转成对象数组
			System.out.println("***Using ArrayHandler***");
			Object[] array = (Object[]) qRunner.query(conn,
					"select * from glue where id = ?", new ArrayHandler(),
					new Object[] { "5" });

			System.out.println("id ------------- type ");
			System.out.println(array[0].toString() + " ------------- "
					+ array[1].toString());
			
			// 以下部分代码采用ArrayListHandler存储方式查询,把结果集中的每一行数据都转成一个对象数组,再存放到List中
			System.out.println("***Using ArrayListHandler***");
			List lArray = (List) qRunner.query(conn, "select * from glue",
					new ArrayListHandler());
			System.out.println("id ------------- type ");
			for (int i = 0; i < lArray.size(); i++) {
				Object[] var = (Object[]) lArray.get(i);
				System.out.println(var[0].toString() + " ------------- "
						+ var[1].toString());
			}
			
			// 以下部分代码采用ColumnListHandler存储方式查询指定列,将结果集中某一列的数据存放到List中
			System.out.println("***Using ColumnListHandler***");
//			List lName = (List) qRunner.query(conn,
//					"select * from glue where id = ?", new ColumnListHandler(
//							"type"), new Object[] { "5" });
			List lName = qRunner.query(conn, "select * from glue", new ColumnListHandler("count"));
			System.out.println("type ");
			for (int i = 0; i < lName.size(); i++) {
				String name = (String) lName.get(i);
				System.out.println(name);
			}
			
			// 以下部分代码采用ScalarHandler存储方式查询,将结果集中某一条记录的其中某一列的数据存成Object
			System.out.println("***Using ScalarHandler***");
			String name = (String) qRunner.query(conn,
					"select * from glue where id = ?",
					new ScalarHandler("type"), new Object[] { "5" });

			System.out.println("type ");
			System.out.println(name);
			
			// 以下部分代码采用KeyedHandler存储方式查询,将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里
			System.out.println("***Using KeyedHandler***");
			Map<String, Map> map2 = (Map<String, Map>) qRunner.query(conn,
					"select * from glue", new KeyedHandler("id"));//按照key=id组织成map

			System.out.println("id: field_name2");
			Map vals = (Map) map2.get(3);
			System.out.println(vals.get("id") + " " + vals.get("type") + ""
					+ vals.get("count"));
			
			// 以下部分代码插入一条数据
			System.out.println("***Insert begin***");
			glue = new Glue();
			qRunner.update(conn, "insert into glue ("
					+ "type,count,price,date)" + "values (?,?,?,?)",
					new Object[] { "辣椒", "20t", "3", "2012/2/12" });
			System.out.println("***update end***");

			
			// 以下部分代码更新一条数据
			System.out.println("***update begin***");
			//注意,update语句中逗号两边一定要有空格
			qRunner.update(conn,"UPDATE glue set type=? , count=? , price=? where id= ?",
					"辣椒1","20t","3",1);
			System.out.println("***update end***");
			// 以下部分代码删除一条数据
			System.out.println("***delete begin***");
			glue = new Glue();
			qRunner.update(conn, "delete from glue where id = ?",
					new Object[] { 16 });
			System.out.println("***delete end***");

		} catch (SQLException ex) {
			ex.printStackTrace();
			System.out.println("***rollback begin***");
			try {
				DbUtils.rollback(conn);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("***rollback end***");
		} finally {
			DbUtils.closeQuietly(conn);
		}

	}
}





        
通信行业CentOS 7内核网络栈优化:高并发连接下UDP/TCP性能调优与系统资源管理 内容概要:本文聚焦于CentOS 7系统在通信行业高并发场景下的性能调优实践,重点围绕内核网络栈优化展开,涵盖UDP/TCP缓冲区调整、文件句柄与连接跟踪表扩容、TIME_WAIT状态复用、软中断分布优化及tuned工具的自动化调优。通过具体配置参数和实际案例(如VoIP软交换系统)深入解析各项调优措施的设计原理与实施效果,有效解决高CPS下丢包、连接失败等问题,并展望了向云化、eBPF等动态智能调优方向的发展趋势。; 适合人群:从事通信系统运维、网络开发或Linux系统性能优化的技术人员,具备一定操作系统和网络基础知识,工作经验1年以上的中初级工程师。; 使用场景及目标:①应用于软交换、媒体网关、信令网关等高并发通信设备的系统调优;②解决UDP丢包、conntrack表满、TCP连接队列溢出等典型性能瓶颈;③提升系统在小包高频、低时延要求场景下的稳定性和吞吐能力。; 阅读建议:建议结合实际生产环境或测试平台同步验证文中配置,重点关注参数背后的物理意义(如BDP、softirq、conntrack机制),并配合ss、conntrack、dmesg等命令进行调优前后对比分析,确保安全可控地实施变更。 立即下载

相关推荐

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

jakarta pool demo

package com.cdw.pool; import org.apache.commons.pool2.BasePooledObjectFactory; import org.apache.commons.pool2.PooledObject; import org.apache.commons.pool2.impl.DefaultPooledObject; public class St

hellocdw的专栏 1149

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,提出了一套融合全局规划、动态避障与局部协同调整的综合路径规划方法。研究内容涵盖基于改进RRT算法与图论的全局路径规划、基于动态风险场和动态窗口法(DWA)的模型预测控制实现动态避障,以及基于分布式协同控制的多无人机局部路径协同策略。通过Matlab平台构建仿真环境,在多种典型城市交通场景下对所提方法进行了系统性验证,结果表明该方法在路径安全性、编队稳定性与任务效率方面表现优异。文章还深入探讨了算法的创新点与未来研究方向,为复杂城市环境下多无人机系统的自主协同提供了理论支撑与技术路径。; 适合人群:具备自动化、控制理论、计算机科学或相关领域基础知识,从事无人机系统、智能交通、路径规划、多智能体协同控制等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为城市空中交通系统中的多无人机安全、高效飞行提供可靠的路径规划解决方案;②支持在复杂、动态的城市场景中开展无人机自主导航、编队飞行与协同控制的技术研究与仿真验证。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法的具体实现细节、参数配置对性能的影响以及不同仿真场景下的实验设计,以深入理解各模块的集成逻辑与实际应用效果。

项目DEMO - 编写一个自定义校验注解

a)注解解释:这个注解表示使用该注解的注解应该包含在生成的Kotlin文档中。换句话说,当使用KDoc生成文档时,应用了 MustBeDocumented 的注解将会出现在文档中。这个注解定义了该注解是一个校验约束,并且指定了用来校验该注解的逻辑类。ListValueConstraintValidator::class 是一个自定义校验类(下文中详细讲)@Target这个注解定义了自定义注解可以应用的目标元素。可以是方法、字段、注解类型、构造函数、参数或类型使用。

CYK_byte的博客 921

避坑指南:QCustomPlot鼠标事件冲突解决方案(左键拖动vs右键框选)

本文深入解析QCustomPlot在QT框架下的高级交互实现,重点解决左键拖动与右键框选的冲突问题。通过自定义事件处理和QRubberBand技术,提供了一套完整的无冲突交互方案,帮助开发者优化数据可视化应用的用户体验。

moss5的博客 660

微信支付V2,jsapi支付拉起收银台报错:调用支付JSAPI缺少参数:total_fee

拉起收银台报错

m0_54355172的博客 3871

Description Resource Path Location Type Access restriction: The constructor LoadLibraryAction(String

在做压缩借 Description Resource Path Location Type Access restriction: The constructor LoadLibraryAction(String) is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.

hellocdw的专栏 9069

Clock Gating设计陷阱:为什么你的ICG cell总是导致setup violation?(附解决方案)

本文深入分析了数字IC设计中ICG(Integrated Clock Gating)单元导致setup时序违规的常见问题,包括时钟偏斜和数据路径过长两大核心原因。通过量化分析影响因素,提供了逻辑重组、寄存器重定时等优化策略,并介绍了预防性设计方法和物理实现阶段的优化技巧,帮助工程师有效解决ICG相关的setup violation问题。

weixin_29168153的博客 203

java在不同系统中处理换行符

Linux,Unix和mac系统的换行是"\n",而Windows的换行并不是直接的"\n",是"\r\n"。所以out.write("\n")只能得到一个黑框,因为Windows不认为这是个“换行”。 直接从记事本输入的话,Windows自动输入了"\r\n",所以从从文本文件中读出来的也是"\r\n",可以正常显示。 那么这是为什么呢?稍微学过正则表达式的朋友都知道:\r是回车符,而\n

hellocdw的专栏 3380

103.在 Vue 3 中使用 OpenLayers 控制图层来显示/隐藏地图

是一个强大的开源库,可以用于构建各种地理信息系统应用。在 Vue 3 中,我们可以结合。方法,可以直接控制某个图层是否可见,而不需要删除或重新创建图层。在开始之前,确保你已经搭建了 Vue 3 项目,并安装了。本文将详细介绍如何在 Vue 3 组合式 API (,并实现按钮控制地图的显示/隐藏功能。会导致 OSM 瓦片地图无法加载。方法控制地图图层的显示与隐藏。安装完成后,即可开始编写代码。在本教程中,我们介绍了如何在。来实现地图的显示/隐藏功能。来实现交互式地图,并通过。在 WebGIS 开发中,

小彭的博客 1559

基于Simulink环境,提供一个关于如何对EMI抑制的DC-DC变换器进行仿真建模的示例

EMI定义:电磁干扰是指任何能中断、阻碍、降低或限制电气设备有效性能的电磁能量。重要性合规性:确保产品符合国际和地方的EMC标准。可靠性:减少因外部或内部EMI导致的系统故障风险。挑战滤波设计:合理设计输入输出滤波器以抑制传导EMI。布局与接地:良好的PCB设计对于减少辐射EMI至关重要。屏蔽:使用金属屏蔽来保护敏感电路不受外界干扰。首先明确要模拟的任务内容。设计一个能够在高频操作下有效抑制EMI的DC-DC变换器。根据工作频率和谐振元件值确定合适的滤波器参数。

xiaoheshang_123的博客 144

Jericho Html paser详解

Jericho Html paser详解 Jericho Html parseAPI: http://jericho.htmlparser.net/docs/javadoc/index.html   1:Source 在解析Html文档中第一步就是创建一个Source对象,该对象的构造方法如下: Source(java.lang.CharSequence text) 

hellocdw的专栏 2217

Vue3 - 最新实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持服务器链接在线URL形式、调用后端接口获取二进制文件流、文件地址(vue3实现excel预览)

vue3,预览excel文件,xlsx,xls,vue预览Excel表格,vue在线编辑xls文件,预览和编辑,vue3如何新开一页浏览器打开查看,手机h5页面打开在线EXCEL文档,在弹框中加载预览,在指定模态框中显示,基于Vue的Excel文件预览,加载失败白屏,报错没反应,详细示例代码教程,文件预览下载,nuxt3,excel预览插件,xlsx插件预览,纯前端vue中预览excel表格,接口调用的文件如何预览查看,文件url地址,vue移动端实现excel在线预览,vue移动端H5网页excel预览,

🏆 前端领域优质创作者 1万+

java图片添加文字

//1.将图片读取到内存中 BufferedImage img = ImageIO.read(new File("2.jpg")); //2.获取图片的画布 Graphics g = img.getGraphics(); //3.在画布的指定位置上画文字 g.setColor(Color.RED); g.setFont(new Font("微软雅黑",Font.BOLD,25));

hellocdw的专栏 1951

OpenClaw小白使用全攻略

OpenClaw全能技能解锁指南:从基础到进阶 摘要: 本文提供OpenClaw AI智能体的完整使用教程,帮助用户从安装后"不知道如何用"到熟练掌握核心功能。教程包含:1)控制台5大区域详解和3个必做初始化设置;2)文件管理、浏览器自动化、文档生成等5大基础功能实操,每个功能配有详细操作步骤、指令模板和效果演示;3)10+高频场景解决方案,如整理文件、搜集资料、写总结等;4)进阶技巧和常见问题解答。通过清晰的图文指引,即使电脑小白也能快速上手,实现办公自动化、提升工作效率。

通俗易懂学IT 3057

TIA博途WINCC的触摸屏VB脚本入门指南(嵌入式)

通过编写事件处理程序,您可以响应触摸屏元素的各种事件,并实现自定义的功能。本文将为您提供TIA博途WINCC触摸屏VB脚本的入门指南,帮助您了解基本的脚本编写和嵌入式开发。假设我们有一个名为"Button1"的按钮元素,当用户点击该按钮时,触发相应的事件处理程序,并在触摸屏上显示一条消息。然后回到触摸屏界面编辑器,在按钮元素的属性窗口中找到"按下"事件,并选择刚才创建的脚本文件作为事件处理程序。现在,当用户点击按钮时,触摸屏将执行相应的事件处理程序,并显示一条消息框,内容为"按钮被点击了!

CodeSageX的博客 4416

jericho-html解析html的一个例子

public static void main(String[] args) throws ClientProtocolException, IOException { CloseableHttpClient client = HttpClients.createDefault(); HttpGet get = new HttpGet("http://book.douban.com/lat

hellocdw的专栏 1374

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

如何在filter中拿到spring容器

public class OriginFilter implements Filter {     private ServletContext servletContext;     final private Logger logger = LoggerFactory.getLogger(getClass());     @Override     public void

hellocdw的专栏 1296

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Struts1工作原理

Struts原理图如下所示:

hellocdw的专栏 715

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Jakarta BeanUtils使用例子程序

//必须要加beanutils包和logging包 public class BeanUtilsDemo { public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{ Company c = new Compa

hellocdw的专栏 665

Tomcat体系结构与运行流程

Server(服务器)是Tomcat构成的顶级构成元素,所有一切均包含在Server中,Server的实现类StandardServer可以包含一个到多个Services; 次顶级元素Service的实现类为StandardService调用了容器(Container)接口,其实是调用了Servlet Engine(引擎),而且StandardService类中也指明了该Service归属的Se

hellocdw的专栏 659

java字符编码

java出现乱码的原因是编码和解码所使用的

hellocdw的专栏 650

Mybatis参数传递总结

单个参数传递的情况:用parameterType指定传入参数类型 publicList getXXBeanList(String xxCode); <selectid="getXXXBeanList" parameterType="java.lang.String"resultType="XXBean">   selectt.* from tableName t where t

hellocdw的专栏 607

web服务器原理初探

web服务器接收并解析浏览器发送过来的http请求

hellocdw的专栏 523

java连接数据库的一个问题

用java连接远程数据连不上,报端口问题。解决方法如下: 1:用netstat -ano 查看1433端口是否打开。 2:用telnet 192.168.44.168 1433查看对方端口是否可以连通 3:如果不能连通,则关闭防火墙

hellocdw的专栏 514
上一篇: Jakarta BeanUtils使用例子程序
下一篇: jakarta pool demo
hellocdw
博客等级 码龄15年 5粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值