【JDBC】使用DBUtils管理SQL的执行

JavaWeb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析 主要介绍了JavaWeb dbutils执行sql命令并遍历结果集时不能查到内容的原因分析及简单处理方法,文中给大家介绍了javaweb中dbutils的使用,需要的朋友可以参考下 立即下载

在“【JDBC】JDBC的基本使用步骤”一文中,我讲解了JDBC中最原始的执行SQL(Satement或PreparedStatement)以及获取执行结果(ResultSet)的相关API用法。接下来,我将讲解一个工具(DBUtils),它能够极大地简化我们在Java中执行SQL的代码量。

注意:DBUtils并不是一项新的技术,它只是把原始技术中的Satement、PreparedStatement、ResultSet等做了一个封装,让我们直接调用它。


Table of Contents

初识DBUtils

QueryRunner类

ResultSetHandle接口

ArrayHandler和ArrayListHandler类使用

BeanHandler和BeanListHandler类的用法

ColumnListHandler类使用ScalarHandler类使用

MapHandler和MapListHandler类的用法


初识DBUtils

诞生背景:

  • 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils。
  • DBUtils就是JDBC的简化开发工具包。需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具。

  • aa

优点:

  1. 无资源泄漏 - DBUtils类确保不会发生资源泄漏。
  2. 清理和清除代码 - DBUtils类提供干净清晰的代码来执行数据库操作,而无需编写任何清理或资源泄漏防护代码。防止了SQL注入。
  3. Bean映射 - DBUtils类支持从结果集中自动填充Java Bean。

特性:

  1. DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
  2. DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
  3. Dbutils三个核心功能介绍:
  • QueryRunner中提供对sql语句操作的API
  • ResultSetHandler接口,用于定义select操作后,怎样封装结果集
  • DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

准备一个SQL:

CREATE DATABASE mydb;

USE mydb;

CREATE TABLE person(
	p_id INT PRIMARY KEY,
	p_name VARCHAR(10),
	p_age INT
);

INSERT INTO person(p_id,p_name,p_age) VALUES
	(1,"asus",20),
	(2,"alibaba",40),
	(3,"huawei",50)


QueryRunner类

功能:包装并执行SQL语句

核心方法:

  • int update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作,返回执行成功后影响的行数。可变参数的出现是因为SQL语句中会出现占位符。
  • <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作,返回的是相关类型。T表示泛型。

Notice:update方法使用示例如下,query方法使用示例在ResultSetHandle接口的讲解中!

增、删、改方法使用示例

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 FirstApp {
    //为了更加方便看到结果,这里直接使用这种方式连接数据库
	static final String driver = "com.mysql.jdbc.Driver";
	static final String url = "jdbc:mysql://localhost:3306/mydb";
	static final String user = "root";
	static final String passwd = "kyle";
	
	public static void main(String[] args) throws SQLException {
		Connection conn = null;

	    //Step 1: Register JDBC driver
	    DbUtils.loadDriver(driver);
	    //Step 2: Open a connection
	    System.out.println("Connecting to database...");
	    conn = DriverManager.getConnection(url, user, passwd);
	    
	    //注意:以下三个函数不能同时开启!
	    //insert(conn);
	    //update(conn);
	    delete(conn);
	}
	public static void insert(Connection conn) {
		QueryRunner qr = new QueryRunner();
		String sql = "INSERT INTO person (p_id,p_name,p_age) VALUES (?,?,?)";
		Object[] params = {5,"apple",30};
		int row = 0;
		try {
			row = qr.update(conn,sql,params);
			System.out.println("受影响的行数为:" + row);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DbUtils.closeQuietly(conn);
		}
	}
	public static void update(Connection conn) {
		QueryRunner qr = new QueryRunner();
		String sql = "UPDATE person SET p_name=?,p_age=? WHERE p_id=?";
		//定义Object数组,存储?中的参数
		Object[] params = {"huawei",200,1};
		int row = 0;
		try {
			row = qr.update(conn,sql,params);
			System.out.println("受影响的函数为:" + row);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DbUtils.closeQuietly(conn);
		}
	}
	public static void delete(Connection conn) {
		QueryRunner qr = new QueryRunner(); //创建SQL类对象
		String sql = "DELETE FROM person WHERE p_id=?";
		int row;
		try {
			row = qr.update(conn,sql,3); //参数:连接对象,要执行的SQL语句,SQL语句中各个问号的具体值
			System.out.println("被影响的行数为:" + row);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DbUtils.closeQuietly(conn);
		}
	}
}

ResultSetHandle接口

功能:接收并处理QueryRunner类的query方法执行结果!

接口实现类概览:

  1. ArrayHandler   将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
  2. ArrayListHandler    将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
  3. BeanHandler    将结果集中第一条记录封装到一个指定的JavaBean中。
  4. BeanListHandler    将结果集中每一条记录封装到指定的JavaBean中,将这些JavaBean在封装到List集合中
  5. ColumnListHandler      将结果集中指定的列的字段值,放到一个List集合中
  6. ScalarHandler  应用于查询结果集中有且只有一个结果(仅一行一列)的情形
  7. MapHandler    将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
  8. MapListHandler     将结果集所有行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合

ArrayHandler和ArrayListHandler类使用

  • ArrayHandler类功能:将结果集第一行存储到Object数组中
  • ArrayListHandler类功能:将结果集全部存储到Object数组中

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

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;

public class FirstApp {
	static final String driver = "con.mysql.jdbc.Driver";
	static final String url = "jdbc:mysql://localhost:3306/mydb";
	static final String user = "root";
	static final String passwd = "kyle";
	
	public static void main(String[] args) throws SQLException {
		Connection conn = null;
		// Step 1: Register JDBC driver
		DbUtils.loadDriver(driver);
		// Step 2: Open a connection
		System.out.println("Connecting to database...");
		conn = DriverManager.getConnection(url, user, passwd);
		
		arrayListHandler(conn);
	}
	public static void arrayHandler(Connection conn)throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM person";
		//调用方法query执行查询,传递连接对象,SQL语句,结果集处理方式的实现类
		//返回对象数组
		Object[] result = qr.query(conn, sql, new ArrayHandler());
		for(Object obj : result){
			System.out.print(obj + "  ");
		}
	}
	public static void arrayListHandler(Connection conn) throws SQLException {
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM person";
		List<Object[]> result = qr.query(conn, sql,new ArrayListHandler());
		for(Object[] objs:result) { //遍历集合
			for(Object obj:objs) {
				System.out.print(obj + " ");
			}
			System.out.println();
		}
	}
}

BeanHandler和BeanListHandler类的用法

  1. BeanHandler类功能:将第一条记录存放到一个JavaBean中
  2. BeanListHandler类功能:将所有记录存放到一个List集合包装的JavaBean中

 

JavaBean
public class Person {
	private int p_id; //这里的成员变量必须和数据库中的成员变量一致
	private String p_name;
	private int p_age;

	public Person() {
		
	}
	public Person(int p_id,String p_name,int p_age) {
		this.p_id = p_id;
		this.p_name = p_name;
		this.p_age = p_age;
	}
	public int getP_id() {
		return p_id;
	}
	public void setP_id(int p_id) {
		this.p_id = p_id;
	}
	public String getP_name() {
		return p_name;
	}
	public void setP_name(String p_name) {
		this.p_name = p_name;
	}
	public int getP_age() {
		return p_age;
	}
	public void setP_age(int p_age) {
		this.p_age = p_age;
	}
	@Override
	public String toString() {
		return getP_id() + " " + getP_name() + " " + getP_age();
	}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

public class FirstApp {
	static final String driver = "con.mysql.jdbc.Driver";
	static final String url = "jdbc:mysql://localhost:3306/mydb";
	static final String user = "root";
	static final String passwd = "kyle";
	
	public static void main(String[] args) throws SQLException {
		Connection conn = null;
		// Step 1: Register JDBC driver
		DbUtils.loadDriver(driver);
		// Step 2: Open a connection
		System.out.println("Connecting to database...");
		conn = DriverManager.getConnection(url, user, passwd);
		
		beanListHander(conn);
	}
	//将结果集的第一行数据,封装到JavaBean对象
	//注意: 被封装成数据到JavaBean对象, 该JavaBean类必须有空参数构造
	public static void beanHandler(Connection conn) throws SQLException {
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM person";
		//调用方法,传递结果集实现类BeanHandler
		// BeanHandler(Class<T> type)
		Person s = qr.query(conn, sql, new BeanHandler<Person>(Person.class)); //Person类一个含有pid,pname,page变量的JavaBean
		System.out.println(s); //输出:net.hackyle.DBUtils.Person@46238e3f
		System.out.println(s.getP_id() + " " + s.getP_name() + " " + s.getP_age());
	}
	public static void beanListHander(Connection conn)throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM Person ";
		//调用方法query,传递结果集处理实现类BeanListHandler
		List<Person> list = qr.query(conn, sql, new BeanListHandler<Person>(Person.class));
		for(Person s : list){
			System.out.println(s);
		}
	}
}

ColumnListHandler类使用

功能:将结果集中的指定列的数据值,存放到一个List集合中。因为每个列的数据类型可能都是不同的,所以需要使用Object类型。

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

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ColumnListHandler;

public class FirstApp {
	static final String driver = "con.mysql.jdbc.Driver";
	static final String url = "jdbc:mysql://localhost:3306/mydb";
	static final String user = "root";
	static final String passwd = "kyle";
	
	public static void main(String[] args) throws SQLException {
		Connection conn = null;
		// Step 1: Register JDBC driver
		DbUtils.loadDriver(driver);
		// Step 2: Open a connection
		System.out.println("Connecting to database...");
		conn = DriverManager.getConnection(url, user, passwd);
		columnListHandler(conn);
	}
	public static void columnListHandler(Connection conn)throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM person;";		
		//调用方法 query,传递结果集实现类ColumnListHandler
		//实现类构造方法中,使用字符串的列名
		List<Object> list = qr.query(conn, sql, new ColumnListHandler<Object>("p_name")); //把数据库中pname所在列的所有数据放在一个List中
		for(Object obj : list){
			System.out.println(obj);
		}
	}
}
/*输出:
	huawei
	asus
	tencent
	apple
*/

ScalarHandler类使用

适用于:结果集中有且只有一个结果(仅有一行一列)时的情形。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ScalarHandler;

public class FirstApp {
	static final String driver = "con.mysql.jdbc.Driver";
	static final String url = "jdbc:mysql://localhost:3306/mydb";
	static final String user = "root";
	static final String passwd = "kyle";
	
	public static void main(String[] args) throws SQLException {
		Connection conn = null;
		// Step 1: Register JDBC driver
		DbUtils.loadDriver(driver);
		// Step 2: Open a connection
		System.out.println("Connecting to database...");
		conn = DriverManager.getConnection(url, user, passwd);
		scalarHandler(conn);
	}
	public static void scalarHandler(Connection conn)throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT COUNT(*) FROM person";
		//调用方法query,传递结果集处理实现类ScalarHandler
		Object count = qr.query(conn, sql, new ScalarHandler<Long>()); //如果已经确定查询结果是个int型,则不用Object类型
		System.out.println(count);
	}
}

MapHandler和MapListHandler类的用法

功能概要:

  • MapHandler类功能:将结果集的第一行数据封装到Map集合中,其中“键”是列名,“值”是这列的数据;
  • MapListHandler类功能:将结果集的全部封装到Map集合中
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.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;

public class FirstApp {
	static final String driver = "con.mysql.jdbc.Driver";
	static final String url = "jdbc:mysql://localhost:3306/mydb";
	static final String user = "root";
	static final String passwd = "kyle";
	
	public static void main(String[] args) throws SQLException {
		Connection conn = null;
		// Step 1: Register JDBC driver
		DbUtils.loadDriver(driver);
		// Step 2: Open a connection
		System.out.println("Connecting to database...");
		conn = DriverManager.getConnection(url, user, passwd);
		mapHandler(conn);
		mapListHandler(conn);
	}
	public static void mapHandler(Connection conn)throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT  * FROM person";
		//调用方法query,传递结果集实现类MapHandler
		//返回值: Map集合,Map接口实现类, 泛型
		Map<String,Object> map = qr.query(conn, sql, new MapHandler());
		//遍历Map集合
		for(String key : map.keySet()){
			System.out.println(key+".."+map.get(key));
		}
	}
	public static void mapListHandler(Connection conn)throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT  * FROM person";
		//调用方法query,传递结果集实现类MapListHandler
		//返回值List集合, 存储的是Map集合
		List<Map<String,Object>> list = qr.query(conn, sql, new MapListHandler());
		//遍历集合list
		for( Map<String,Object> map : list ){
			for(String key : map.keySet()){
				System.out.print(key+": "+map.get(key)+"  ");
			}
			System.out.println();
		}
	}
}

 

戴尔PowerEdge服务器R450 RAID配置步骤 阅读详情

相关推荐

深入分析RAG知识库多模态数据预处理

多模态企业数据预处理是构建高质量RAG知识库的关键环节。本文详解了处理流程:1)文档格式识别与路由;2)多模态内容提取(文本、图像、音视频);3)结构解析与语义重建;4)数据清洗与增强;5)智能分块(强调语义完整性);6)元数据注入。推荐使用开源工具如PaddleOCR、Whisper、BLIP-2等,或商业API处理复杂场景,最终生成带丰富元数据的结构化内容,为后续向量化检索奠定基础。

qq_35354529的博客 1379

QueryRunner 实现批量处理

参考内容: public int updateComputerInfoPerfectMeny( String jb_id, String time, String[] pcid) { int result = 0; Connection conn = null; try { String sql = "update BSM...

u013456370的专栏 8048

3D Slicer隐藏技巧:这样玩转医学影像分割与3D建模(含DICOM处理)

本文深入探讨3D Slicer在医学影像分割与3D建模中的高级应用技巧,包括多模态分割策略、三维可视化优化及DICOM数据处理。通过专业配置和Python脚本示例,帮助医疗AI开发者和影像科医师提升工作效率,实现精准的医学图像分析与建模。

weixin_28559803的博客 433

Java学习笔记 DbUtils数据库查询和log4j日志输出 使用

DbUtils使用 QueryRunner DbUtils中定义了一个数据库操作类QueryRunner,所有的数据库操作CRUD都是通过此类来完成。 此类是线程安全的 方法名 对应sql语句 excute create语句 query select语句 update update,insert,delete ResultSetHandler DbUtils中...

weixin_30552811的博客 450

对话系统简介

《文本上的算法》学习笔记1、问答型1.1、基于语义分析的方法1.2、基于信息抽取的方法1.3、端对端的方法2、任务型2.1、生成式模型( Generative Model )2.2、判别式模型( Discrimitive Model )2.3、规则系统3、闲聊型3.1、规则方法3.2、生成模型3.3、检索方法 个人认为NLP领域最难的方向可以说是阅读理解与文本生成/摘要,而对话系统,尤其是闲聊常常...

盘一哈nlp 6752

matlab电偶极子源码,电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。摘要电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区...

weixin_35135480的博客 3150

调试 以及打印sql语句查询日志

调试 打印sql语句 dd = 打印输出 dd(对象->tosql)=输出sql语句 DB::connection()->enableQueryLog(); // 开启查询日志 DB::table('xxx'); // 要查看的sql$queries = DB::getQueryLog(); // 获取查询日志 print_r($queries); // 即可查看执行的sql,传

lwei0329的专栏 2701

uniapp 使用摄像头 live-pusher (APP)

uniapp 中开发 app 时使用live-pusher踩过的坑

随身笔记 1万+

mybatis中开启sql日志打印

我们平常用mybatis框架的时候,会遇到一些调试,需要打印sql日志出来,网上查了一些,发现一个很简单的方法,只需要一步就行: 如图所示,在mybatis-config.xml文件中的setting里面设置logImpl属性值为STDOUT_LOGGING,再次调试,控制台就能打印出sql日志出来了    ...

NasubiZW 1万+

SAP 与 Palantir 合作全景解析:这不是普通集成,而是把 ERP、数据语义层、云迁移与企业级 AI 串成一条价值链

SAP与Palantir的战略合作聚焦企业数字化转型核心痛点,通过深度技术整合构建"数据-决策-执行"闭环。合作包含四大主线:云迁移连续性保障、SAP业务数据云与Palantir平台对接、联合工程开发、高监管行业优先落地。技术实现上采用SAP认证插件,支持双向数据交互和实时业务动作触发。该合作突破了传统ERP系统局限,将业务语义与AI执行相结合,特别适合制造业供应链优化、财务争议处理等高价值场景,为企业在云迁移过程中实现业务连续性与智能化升级提供新范式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 192

关于瑞芯微SDK中buildroot的架构分析、配置细节、以及一些使用步骤

摘要:瑞芯微SDK基于Buildroot框架,针对RK3568等芯片提供定制化开发环境。核心目录包括buildroot(配置与编译框架)、kernel(定制内核)和u-boot(引导程序)。开发流程为:1)加载芯片默认配置;2)通过menuconfig定制系统(架构、内核、软件包等);3)可选修改内核配置。关键硬件适配需修改设备树(dts)和分区表(parameter.txt),系统行为通过启动脚本(S90network)调整。最终执行make编译生成可烧录固件。该框架通过配置文件驱动,实现从工具链构建到固

Hyjks的博客 1199

JDBC事务和DBUtils框架

对于不支持事务的数据库,JDBC也无法提供事务处理的功能。方法)时,由于事务需要手动提交或回滚,因此需要手动关闭数据库连接。在JDBC中,事务是指一组数据库操作,这些操作被视为一个单独的工作单元,并且要么全部成功完成,要么全部失败回滚。进行数据库操作时,不需要手动关闭这些资源,可以避免因未关闭资源而导致的内存泄漏和数据库连接池资源耗尽等问题。还提供了多种构造函数,可以传入不同的数据源和结果集处理器,以适应不同的使用场景。参数是一个可变参数,可以传入多个参数,用于替换SQL语句中的占位符。

weixin_49031148的博客 310

【A2DP】规范精讲[1]: 深入解析A2DP协议的核心架构

在蓝牙技术发展的早期阶段,音频传输主要通过SCO(同步面向连接)链路实现,这种设计主要针对语音通信,音质有限且功能单一。随着人们对无线高质量音频需求的增长,​​Advanced Audio Distribution Profile (A2DP)​​ 应运而生,成为蓝牙音频传输的技术基石。

byte轻骑兵的技术小窝 1万+

DbUtils如何更好的使用

一、先熟悉DBUtils的API: 简介:DbUtils是一个为简化JDBC操作的小类库。(一)整个dbutils总共才3个包: 1、包org.apache.commons.dbutils 接口摘要 ResultSetHandler 将ResultSet转换为别的对象的工具。 RowProcessor 将ResultSet行转换为别的对象的工具。 类摘要 BasicRowProcessor RowProcessor接口的基本实现类。 BeanProcessor BeanProcessor匹配列明到Bean属

m0_51068829的博客 77

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

DBUtils使用

DBUtils使用 简介:DbUtils是一个为简化JDBC操作的小类库。 1.DBUtils的包 (1)包org.apache.commons.dbutils (2)包org.apache.commons.dbutils.handlers (3)包org.apache.commons.dbutils.wrappers 2.使用DBUtils 其实只是使用的话,只看两个类(DbUtils 和QueryRunner)和一个接口(ResultSethandler)就可以了。 (1)DbUtils DbUtils

qq_49224096的博客 126

Devexpress16.2.6破解工具

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

DBUtils使用详解【介绍的很详细】

一 先熟悉DBUtils的API:  简介:DbUtils是一个为简化JDBC操作的小类库。 以下使用的是最新版的commons-dbutils-1.4,先给个简介,以便迅速掌握API的使用。       整个dbutils总共才3个包: 1、包org.apache.commons.dbutils          接口摘要 ResultSetHandler  

欲望以提升热忱 毅力以磨平高山 1499

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

DBUtils的使用详解

一、DBUtils简介 DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean。 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,使用dbutils能极大简化jdbc编码的工作量,也不会影响程序的性能。 二、DBUtils包的简介 1、org.apache.commons.dbutils (该包中的类主要帮助我们更便捷的操作JDBC) 2、org.apache.commons

xxa0625的博客 1630

jdbc学习笔记(3):使用dbutils完成CRUD操作

文章目录1.使用步骤1.1导入jar包(commons-dbutils-1.4.jar)1.2创建`queryrunner`类1.3编写sql1.4执行sql1.5完整示例2.三个核心类或接口2.1QueryRunner:类名2.2DbUtils:释放资源,控制事务 类2.3ResultSetHandler:封装结果集 接口 dbutils是apache开发的一个工具类,对jdbc完成了更上层的...

超级无敌小胖头 264

DBUtils的使用

DBUtils是jdbc的简化开发工具包。需要我们导入commons-dbutils-1.4.jar的包 DBUtils是java编程中的数据库操作实用工具,小巧简单实用。DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。Dbutils三个核心功能介绍   l  QueryRunner中提供对sql语句操作的API.   l  ResultSetHandler接口,用于定义s...

半庭竹韵的博客 1321

DbUtils

分类 说明 名称 DbUtils 全称 Commons DbUtils 功能 数据库操作组件 Common DbUtils是由Apache组织提供的用于封装JDBC简化DAO层开发的工具类,用于简化JDBC应用程序的开发。 数据表读操作后可将结果集转换为List、Array、Set等Java集合 数据表写操作仅需书写SQL语句 使用JNDI、数据库连接池等技术优化性能...

JunChow 528

DBUtils

一:Dbutils是什么? Dbutils:主要是封装了JDBC的代码,简化Dao层的操作。作用:帮助java程序员,开发Dao层代码的简单框架。类似于前面的万能查找搜索等工具类。 二:为什么需要Dbutils ? 在使用Dbutils 之前,我们Dao层使用的技术是JDBC,那么分析一下JDBC的弊端:(1)数据库链接对象、sql语句操作对象,封装结果集对象,这三大对象会重复定义(2)封装数据的代码重复,而且操作复杂,代码量大(3)释放资源的代码重复 三:DBUtils三个核心类介绍

wddsaas的博客 283

DBUtils的简介

简介: 如果只是用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发, 本案例我们采用Apache Commons组件的一个成员:DBUtils DBUtlis就是JDBC的简化开发工具包。需要使用的技术:连接池(获取连接),SOL语句都没少 DBUtils是java编辑中的数据库操作非常实用工具,小巧简单。 DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码 DBUtils三个核心功能介绍 QueryRunner中提供对sql

kaszxc的博客 318

DBUtils与JavaBean学习

DBUtils学习 1.DBUtils介绍 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,采用apache commons组件一个成员:DBUtils。 DBUtils就是JDBC的简化开发工具包。需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具。 DBUtils是java编程中的数据库操作实用工具,小巧简单实用。 DBUtil...

qq_41439534的博客 319

DBUtils如何使用

DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味、最容易出错的一大部分工作。 在使用DBUtils之前,应该注意一些问题: 1、DBUtils是JDBC的简单封装,可以和JDBC混合使用。 2、DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表

weixin_49081673的博客 285

commons dbutils 使用

1.Commons dbutils是什么? commons-dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List。 2.Commons dbutils主要相关类及接口的简介:主要讲解两个类(org.apache.commons.dbutils.DbUtils 和org.apache.commons.dbutils.Q

小菜的粉丝——专栏 1055

dbutils工具

dbutils工具         问题:dbutils是什么,有什么作用?                   它就是一个简单的jdbc封装工具.                   使用dbutils可以简化操作.                   要使用dbutils需要导入jar包.                             dbutils核心               ...

qq_39592670的博客 263
上一篇: 【JSP】快速入门JSTL的核心标签库
下一篇: 【JDBC】快速入门“连接池”技术
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值