【JavaWeb】03-使用apache的commons-dbutils操作数据库

xilinx zynq-7000 linux下rs422串口通信测试步骤 这几天使用xilinx的zynq-7000系列调试rs422串口,期间遇到不少问题,好在最终调试完成,在这里记录一下调试步骤。 我用的soc型号是xc7z100,板载了2个rs422外设,PS端有2个uart控制器,uart0用于连接rs232并作为console控制台输出,uart1连接rs422。 rs422和主板连线原理图如下: 其中422_TXD1_3V3 和422_RXD1_3V3 为数据发送和接收引脚,422_TXD_DE1_3V3为发送使能引脚,422_RXD_REn1_... 阅读详情
  1. 主要的类:QueryRunner类的使用
    query():查询
    update():更新(插入、删除、修改)
    insert():插入(返回主键)
  1. 接受返回值的ResultSetHander接口
    ArrayHandler:把结果集中的第一行数据存放到数组
    ArrayListHandler:把结果集中的每一行数据存放到数组集合
    BeanHandler:把结果集中的第一行数据封装到指定的实体类中
    BeanListHandler:把结果集中的每一行数据封装到指定的实体类集合中
    ColumnListHandler:把结果集中的某一列数据存放到list集合中
    ScalarHandler:一般用于获取聚合函数的统计结果
  1. 以一个数据库中的Teacher表为例
这里注意:使用dbutils需要保证实体类和数据库的字段一致,不能使用驼峰命名

3.1 获取全部数据

	public List<Teacher> selectAll() throws SQLException {
		
		// 使用数据源作为参数创建QueryRunner对象
		QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
		
		// 使用query方法实现查询
		String sql = "select * from teacher";
		List<Teacher> teacherList = qr.query(sql, new BeanListHandler<>(Teacher.class));
		
		return teacherList;
	}

3.2 获取单条数据

	public Teacher selectOne() throws SQLException {
		
		QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
		
		String sql = "select * from teacher limit 0,1";
		Teacher result = qr.query(sql, new BeanHandler<>(Teacher.class));
		
		return result;
	}

3.3 统计数据库数据数量

	// 统计有多少老师
	public long selectCount() throws SQLException {
		QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
		
		String sql = "select count(*) from teacher";
		
		Object count = qr.query(sql, new ScalarHandler<>(2));
		
		return (Long)count;
	}

3.4 多条件查询

	public List<Teacher> selectAll(Teacher teacher) throws SQLException {
		QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
		
		String sql = "select * from teacher where 1 = 1";
		List<Object> params = new ArrayList<>();
		
		if (teacher.getId() != null) {
			sql += " and id = ?";
			params.add(teacher.getId());
		}
		if (teacher.getName() != null) {
			sql += " and name = ?";
			params.add(teacher.getName());
		}
		if (teacher.getSex() != null) {
			sql += " and sex = ?";
			params.add(teacher.getSex());
		}
		if (teacher.getClass_id() != null) {
			sql += " and class_id = ?";
			params.add(teacher.getClass_id());
		}
		
		List<Teacher> result = qr.query(sql, new BeanListHandler<>(Teacher.class), params.toArray());
		
		return result;
	}

3.5 插入数据使用主键返回

	public Teacher insert(Teacher teacher) throws SQLException {
		QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
		
		String sql = "insert into teacher(name,sex,birthday,class_id) value(?,?,?,?)";
		
		// 保存数据并实现主键返回,注意:返回的主键是BigInteger类型
		BigInteger id = (BigInteger)qr.insert(sql, new ScalarHandler<>(1), teacher.getName(), teacher.getSex(), teacher.getBirthday(), teacher.getClass_id());
		
		teacher.setId(id.longValue());
		
		return teacher;
	}

3.6 插入数据只返回插入结果

	public int insert(Teacher teacher) throws SQLException {
		QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
		
		String sql = "insert into teacher(name,sex,birthday,class_id) value(?,?,?,?)";
		
		int result = qr.update(sql, teacher.getName(), teacher.getSex(), teacher.getBirthday(), teacher.getClass_id());
		
		return result;
	}
2026年经典爬虫案例专栏|第17篇:学术论文爬虫实战——知网与万方数据采集 字段名说明数据类型title论文标题字符串authors作者列表列表abstract摘要字符串keywords关键词列表列表journal发表期刊字符串year发表年份整数volume卷号字符串issue期号字符串pages页码范围字符串citations引用次数整数downloads下载次数整数doiDOI编号字符串url论文链接字符串学术论文爬虫是科研工作的重要辅助工具,可以帮助研究人员高效地收集和管理论文数据。 阅读详情

相关推荐

Scipy优化踩坑实录:trust-constr和SLSQP约束定义到底差在哪?

本文深入解析了Scipy优化模块中trust-constr和SLSQP两种方法在约束定义上的差异。通过对比面向对象的trust-constr和字典式定义的SLSQP,揭示了它们各自的优势与适用场景,帮助开发者在有约束优化问题中选择合适的算法,提升计算效率与准确性。

weixin_42573113的博客 270

JAVA利用apache的common-lang库转义HTML、SQL、Unicode

转义通常用在需要写入数据库的时候,经过转义可以避免很多潜在的问题,使系统更健壮。但是Java并没有自带相关类库。通常我们使用Apache开源的common-lang类库。 Apache common lang最新版下载地址:点击下载 import org.apache.commons.lang.StringEscapeUtils; public class StringEsc

从零开始 5003

STM32F103串口接收中断:USART_IT_IDLE和USART_IT_RXNE区别

2:如果是大于1个byte的数据,在不用DMA的情况下,同时使能USART_IT_RXNE,USART_IT_IDLE中断,每收到一个字节在中断中把数据存到缓存中,待收到USART_IT_IDLE中断时,收完整帧数据,然后再解析处理数据。比如:如上图在初始化时,同时开启了两个中断,如果传送8个字节的数据,就会产生8个USART_IT_RXNE,和1个USART_IT_IDLE中断。(如果接收到数据,在1个byte的时间内,没有收到新数据,就认为是数据传送完成,产生空闲USART_IT_IDLE中断)

weixin_66299220的博客 2398

apache-commons-lang StringEscapeUtils对SQL、HTML、XML、JavaScript、Java 特殊字符的转义和还原

应该说,您即使没有处理 HTML 或 JavaScript 的特殊字符,也不会带来灾难性的后果,但是如果不在动态构造 SQL 语句时对变量中特殊字符进行处理,将可能导致程序漏洞、数据盗取、数据破坏等严重的安全问题。网络中有大量讲解 SQL 注入的文章,感兴趣的读者可以搜索相关的资料深入研究。 虽然 SQL 注入的后果很严重,但是只要对动态构造的 SQL 语句的变量进行特殊字符转义处理,就可以

王星乐的博客 1309

如何使用obspy下载地震波形数据

如果你是地震研究学者,或者需要进行地震方面的研究,那么地震数据下载是一个必不可少的流程,本文将告诉你如何使用obspy下载想要的地震数据

monsterk1的博客 2074

电流采样(分流器与霍尔传感器)

霍尔效应霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。简单原理如图1所示,半导体薄片两端通以控制电流I,垂直方向施加磁感应强度为B的匀强磁场,d为半导体材料的厚度,k为霍尔常数,它与半导体材质有关,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压,它们之间的关系为。霍尔元件。

weixin_48867130的博客 1万+

17.Java-commons-dbutils工具包

DbUtil是一个用于简化JDBC操作的工具类,它封装了获取数据库连接、释放资源等常用的操作,并提供了一系列常用的数据库操作方法,如插入、更新、查询等。使用DbUtil可以省去大量的样板代码,提高开发效率和代码的可读性,同时避免一些常见的错误,如未正确释放数据库连接等。

LB_bei的博客 281

手把手教你从入门到精通C# MES通信

本文是C#与MES通信通信的目录,使用C#与各种MES系统通信的方法我都会在专栏中讲到,比如WebService、Http、Ftp、共享文件夹、串口通信等,绝对是上位机软件工程师实现与MES系统通信的必备教程!

qq_34059233的博客 8742

commons-dbutils数据库工具包的基本使用

目录 一、简介: 二、主要类与相关接口介绍 DbUtils类 QueryRunner类 ResultSetHandler接口 三、测试示例: 一、简介: commons-dbutils是Apache开源组织提供的用于操作数据库的工具包。对于数据库的操作无外乎就是【增删改查】,本质上只是SQL语法的不同。 一个普通的查询操作其处理过程如下: 创建Connection连接。 创建...

淋雨一直走啊 2982

强化学习(Reinforcement Learning)与动态系统控制方法

一个具体的 RBC 的例子是自动驾驶汽车中的交通规则。在训练过程中,代理通过与环境交互获取奖励信号,并学习如何在某个状态下采取最佳的行动,以最大化长期的累积奖励。在化工过程中,通过对生产过程中的温度、压力、流量等参数的控制来实现产品的质量和产量的提高。需要注意的是,以上代码只是一个简单的示例,实际的 MPC 系统可能会更加复杂,并包含更多的模型预测和控制算法来实现更复杂的控制任务。需要注意的是,以上代码只是一个简单的示例,实际的自动驾驶汽车系统可能会更加复杂,并包含更多的规则和条件来确保安全行驶。

AI天才研究院 4062

Harness Engineering:让Coding Agent真正落地生产

本文将带你系统性地了解如何让Coding Agent真正落地生产,核心是依托(全球领先的持续交付、云成本管理、 feature flagging、安全治理一体化平台),结合企业级AIDD(AI-Driven Development)的工程化实践,构建一套可信赖、可观测、可扩展、可治理的Coding Agent落地体系。核心概念与理论基础:什么是Coding Agent?它和普通的AI代码补全工具(比如GitHub Copilot)有什么区别?什么是Harness Engineering?

移动开发前沿的博客 454

DbUtils(二) 结果集实例

单行数据处理:ScalarHandler    ArrayHandler    MapHandler    BeanHandler       多行数据处理:BeanListHandler    AbstractListHandler(ArrayListHandler MapListHandler ColumnListHandler)                        

关于代码的那些事 4497

【教程4>第2章>第18节】 GMSK调制系统的FPGA开发与matlab对比验证

GMSK(高斯最小频移键控)是一种连续相位的频移键控(CPFSK)调制方法,它在数字通信中得到了广泛应用,特别是在移动通信系统中。GMSK通过限制频率偏差的累积来减少带外辐射,并通过使用高斯滤波器对。

FPGA/MATLAB学习教程/源码/项目合作开发 998

JavaWeb_第9章_数据库编程

第9章 数据库编程摘要 本章介绍了Java程序通过JDBC技术连接和操作关系型数据库的方法。主要内容包括: JDBC概述:JDBC是一套标准Java类库,提供了统一的API接口规范,使Java程序能够连接不同类型的数据库(MySQL、Oracle等),解决了数据库访问的移植性问题。 JDBC快速入门: 搭建步骤:准备数据库→创建项目引入依赖→编写代码 核心流程:注册驱动→获取连接→创建Statement→执行SQL→处理结果→释放资源 示例代码展示了完整的JDBC查询操作 核心API: DriverMana

weixin_45846724的博客 375

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用apache commons的DBUtils的数据库进行操作

目录 一、增、删、改操作 二、查询操作 1.ArrayHandler 2.ArrayListHandler 3.BeanHandler 4.BeanListHandler 5.ColumnListHandler 6.ScalarHandler 5.MapHandler 8.MapListHandler 使用JDBC开发的过程中,会发现代码比较的冗余,为了简化开发,我们可以使用...

杨杨之余的博客 1554

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

commons-dbutils 工具使用

一、准备工作 1.1 环境准备 导入 commons-dbutils 工具包 ,本文采用:commons-dbutils-1.4.jar 1.2 数据库准备 本文采用 c3p0 技术创建 Connection 连接池 DataSourceUtils 代码实现: package com.test.utils; import java.sql.Connection; import jav

木鲸鱼 1287

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

初学JDBC,获取插入记录的主键、执行批量操作

一、获取插入记录主键值 在创建语句的地方使用Statement.RETURN_GENERATED_KEYS标识一下,然后通过getGeneratedKeys方法获得 preparedStatement=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); preparedStatement.excuteUpdate(...

aa8102980的博客 188

Apache Commons 工具类介绍及简单使用

谢谢文章的作者。     Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类做简单介绍。 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换.

TechBirds在路上 9037

获取insert生成的主键

通过原始jdbc或mybatis获取insert生成的主键值

weixin_44351616的博客 1171

Apache Commons DbuTils 详解

ResultSetHandler接口实现类、连接池、数据源、DataSource、QueryRunner类、查询的一般过程与query方法

qq_46926869的博客 1808

常用工具类 (一) : Apache Commons 常用工具类整理 (全)

Apache Commons 下常用工具类, 需要对应API时可当字典查使用

Guizy 8638

apachecommon连接mysql_对JDBC的封装,调用Apache Commons DBUtil组件的数据库操作类

工作的需要,不能全部使用Hibernate和数据库交互,在此记录Apache Commons DBUtil组件的数据库操作类,供大家参考。import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import java.util.Map;import javax.sql.DataSource;impo...

weixin_36002475的博客 288

使用apache common lang包下的StringEscapeUtils来对html,sql等特殊字符进行转义

org.apache.commons.lang.StringEscapeUtils 类可以对js sql html xml等代码进行转义!     String userName = ”1' or '1'='1”;     String password = ”123456”;     userName = StringEscapeUtils.escapeSql(userNam

cuixiang1022的专栏 2328

apache common工具包简介

e Commons 工具类介绍及简单使用 Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类做简单介绍。 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES、...

hhm1994的博客 5296

dbutils的插入数据操作

在使用之前,需要导入dbutils的jar包 package jdbc_demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; public class DbutilsDemo { /*

weixin_44682587的博客 2542

使用commons-dbutils想进行insert操作时报java.sql.SQLException: Error Query: insert into错误但可以看到需要insert的数据

不是调用update方法!不是调用update方法!不是调用update方法! 虽然都是调用executeUpdate方法,但是Commons-dbutils封装的update仅用来做update、delete操作,不可以用来insert。以下是错误示范 public int insert(String userId, String address, Date added, String receiver, String receiverPhone) { int rows = 0;

weixin_46149893的博客 1016
上一篇: 【JavaWeb】2.封装jdbc工具类
下一篇: 【HTML】01-html基础介绍和默认标签含义
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值