首页 > 编程语言 >【Java编程】DBUtils使用教程

【Java编程】DBUtils使用教程

时间:2024-12-10 13:20:30浏览次数:5  
标签:qr Java 编程 QueryRunner ComboPooledDataSource student new DBUtils ds

一、DBUtils工具

1.1 简介DBUtils工具

DBUtils是Apache的工具,是一个对jdbc的简单封装的工具。提供了一些通用的jdbc操作方法。

1.2 使用步骤

1)导入jar包

commons-dbutils-1.2.jar

2)使用的API

QueryRunner类:通过此类可以执行更新操作或者查询操作。

update(.....): 用于更新操作(DDL、DML)

query(.....): 用于查询操作(DQL)

ResultSetHandler接口:用于封装查询之后的结果。

Object handle(ResultSet rs) :用于封装数据

常用的实现类:

ArrayHandler:把结果集的第一行的数据封装成对象数组。

ArrayListHandler:把结果集的每一行数据封装对象数组,把这个对象数组放入List中

BeanHandler:把结果集的第一行数据封装成javabean

BeanListHandler: 把结果集的每一行数据封装成javabean,把这个javabean放入LIs中

ScalarHandler:把结果集的第一行第一列取出。通常用于聚合函数查询。例如(count()/max())

如果表的字段名称和javabean的属性名称不一致时,需要自定义ResultSetHandler的实现类
3)更新方法

/**

* 使用dbutils工具

*/

public class Demo1 {

@Test

public void testInsert() throws Exception{

ComboPooledDataSource ds = new ComboPooledDataSource();

//1.创建QueryRunner对象

QueryRunner qr = new QueryRunner(ds);

//2.执行操作

//qr.update("INSERT INTO student(NAME,age,address) VALUES('张三11',20,'广州天河')");

qr.update("INSERT INTO student(NAME,age,address) VALUES(?,?,?)", new Object[]{"eric11",20,"广州天河"});

}


@Test

public void testInsert2() throws Exception{

ComboPooledDataSource ds = new ComboPooledDataSource();

Connection conn = ds.getConnection();

QueryRunner qr = new QueryRunner();

qr.update(conn,"INSERT INTO student(NAME,age,address) VALUES('张三22',20,'广州天河')");

//手动关闭连接

conn.close();

}

}

4)查询方法

/**

* dbutils执行查询操作

*/

public class Demo2 {

/**

* ArrayHandler: 把结果集的第一行的数据封装成对象数组。

*/

@Test

public void test1() throws Exception{

ComboPooledDataSource ds = new ComboPooledDataSource();

//1.创建QueryRunner

QueryRunner qr = new QueryRunner(ds);

//2.执行sql

Object[] arr = (Object[])qr.query("select * from student where id=?", new ArrayHandler(),new Object[]{2});

for(Object obj:arr){

System.out.println(obj);

}

}


/**

* ArrayListHandler: 把结果集的每一行数据封装对象数组,把这个对象数组放入List中

* @throws Exception

*/

@Test

public void test2() throws Exception{

ComboPooledDataSource ds = new ComboPooledDataSource();

//1.创建QueryRunner

QueryRunner qr = new QueryRunner(ds);

//2.执行sql

List<Object[]> list = (List<Object[]>)qr.query("select * from student", new ArrayListHandler());

for(Object[] arr:list){//一行

//一列

for(Object obj:arr){

System.out.print(obj+"\t");

}

System.out.println();

}

}


/**

* BeanHandler:把结果集的第一行数据封装成javabean

* 约定前提:表的字段名称和javabean的属性名称保持一致!!

*/

@Test

public void test3() throws Exception{

ComboPooledDataSource ds = new ComboPooledDataSource();

//1.创建QueryRunner

QueryRunner qr = new QueryRunner(ds);

//2.执行sql

Student student = (Student)qr.query("select * from student", new BeanHandler(Student.class));

System.out.println(student);

}


/**

* BeanListHandler: 把结果集的每一行数据封装成javabean,把这个javabean放入LIst中

* 约定前提:表的字段名称和javabean的属性名称保持一致!!

*/

@Test

public void test4() throws Exception{

ComboPooledDataSource ds = new ComboPooledDataSource();

//1.创建QueryRunner

QueryRunner qr = new QueryRunner(ds);

//2.执行sql

List<Student> list = (List<Student>)qr.query("select * from student", new BeanListHandler(Student.class));

for (Student student : list) {

System.out.println(student);

}

}


/**

* ScalarHandler:把结果集的第一行第一列取出。通常用于聚合函数查询。例如(count()/max())

*/

@Test

public void test5() throws Exception{

ComboPooledDataSource ds = new ComboPooledDataSource();

//1.创建QueryRunner

QueryRunner qr = new QueryRunner(ds);

//2.执行sql

Long count = (Long)qr.query("select count(id) from student", new ScalarHandler(1));

System.out.println("行数:"+count);

}


/**

* 如果表的字段名称和javabean的属性名称不一致时,需要自定义ResultSetHandler的实现类

*/

@Test

public void test6() throws Exception{

ComboPooledDataSource ds = new ComboPooledDataSource();

//1.创建QueryRunner

QueryRunner qr = new QueryRunner(ds);

List<Student> list = (List<Student>)qr.query("select * from student2", new MyStudentHandler());

for (Student student : list) {

System.out.println(student);

}

}

}


/**

* 自定义ResultSetHandler

*/

class MyStudentHandler implements ResultSetHandler{

@Override

public Object handle(ResultSet rs) throws SQLException {

List<Student> list = new ArrayList<Student>();

while(rs.next()){

Student s = new Student();

s.setId(rs.getInt("sid"));

s.setName(rs.getString("sname"));

s.setAge(rs.getInt("sage"));

s.setAddress(rs.getString("saddress"));

list.add(s);

}

return list;

}

}

原创 棉花糖老丫

标签:qr,Java,编程,QueryRunner,ComboPooledDataSource,student,new,DBUtils,ds
From: https://www.cnblogs.com/o-O-oO/p/18554161

相关文章

  • Rust语言的崛起:为何它是现代系统编程的未来
    近年来,Rust语言逐渐在开发者社区中崭露头角,成为现代系统编程的首选之一。它不仅被认为是C和C++的替代者,甚至在一些场景下被认为是未来编程语言的代表。那么,Rust为什么能够迅速崛起,并获得如此广泛的关注?它又如何改变系统编程的未来?1.Rust的诞生与背景Rust是由Mozilla的......
  • 可编程直流负载的使用说明
    可编程直流负载是一种能够模拟真实负载的设备,它可以根据用户的需求进行电流、电压、功率等参数的设定和调节。这种设备在电力系统、电源设备、电池等领域有着广泛的应用。以下是对可编程直流负载的使用说明:连接电源:首先,将可编程直流负载的电源接口连接到电源上,注意电源的正负极要......
  • 代码瘦身与防护:JavaScript 打包中的代码混淆和代码压缩
    前言在前端开发中,JavaScript是构建动态和交互式网页应用的核心技术。然而,随之而来的代码体积和安全性挑战也不容忽视。代码混淆和代码压缩作为两种主要的解决方案,通过不同的手段提高了代码的安全性和执行效率。本文将深入探讨JavaScript打包过程中如何实现代码混淆和代......
  • Java 架构师面试题解析(2024 年版)
    在当今竞争激烈的技术领域,成为一名Java架构师需要具备深厚的技术功底和丰富的实践经验。为了帮助大家更好地准备Java架构师面试,本文整理了一些2024年常见的面试题及答案解析。一、基础篇1.谈谈你对面向对象编程三大特性的理解?封装:将数据和操作封装在类中,通过访问修......
  • 基于HTML+CSS+JavaScript仿淘宝购物商城设计毕业论文源码
    常见网页设计作业题材有个人、美食、公司、学校、旅游、电商、宠物、电器、茶叶、家居、酒店、舞蹈、动漫、服装、体育、化妆品、物流、环保、书籍、婚纱、游戏、节日、戒烟、电影、摄影、文化、家乡、鲜花、礼品、汽车、其他等网页设计题......
  • 驾校预约系统|Java|SSM|VUE| 前后端分离
                  【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apachetom......
  • 摊位管理系统|Java|SSM|JSP| 前后端分离
                 【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apachetomca......
  • 多人命题系统|Java|SSM|JSP| 前后端分离
    【一】项目提供非常完整的源码注释【二】相关技术栈文档【三】源码讲解视频(收费)                     【其它服务】【一】可以提供远程部署安装,包扩环境【二】提供软件相关的安装包【三】如果需要提供java入门资料可咨询 ......
  • 音乐管理系统|Java|SSM|VUE| 前后端分离
    【一】可以提供远程部署安装,包扩环境【二】提供软件相关的安装包【三】如果需要提供java入门资料可咨询             【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、S......
  • java基础Day2 基本的Dos命令
    基本的Dos命令打开CMD的方式开始+系统+命令提示符windows+r+cmdshift+鼠标右键,打开powershell资源管理器的地址栏前面加上cmd路径管理员身份运行:选择以管理员方式运行cmd窗口中右键可以直接粘贴常用的Dos命令盘符切换:C:\Users\xyt>D:查看当前目录下的所有文件:C:\U......