package DBUtils_;
import druid_.Actor;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
/**
* 使用Apache-DBUtils 工具类 + Druid 完成对Actor表的CRUD操作
*/
public class DBUtils_Use {
//select语句用queryRunner.query()
@Test
public void testQueryMany() throws SQLException {
//1.得到连接(用Druid)
Connection connection = JDBCUtilsByDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本Project中。
//3.创建QueryRunner
QueryRunner queryRunner = new QueryRunner();
//4.可以执行相关的方法,返回ArrayList结果集。
//String sql = "select * from actor where id >= ?";
//也可以查询部分列,只不过其余列的值为null。
String sql = "select id,name from actor where id >= ?";
List<Actor> list =
queryRunner.query(connection, sql, new BeanListHandler<>(Actor.class), 1);
/*
说明:
1. query()方法就是执行sql语句,得到resultSet ---封装到---> ArrayList集合中
2. 之后就返回集合
3. connection:连接
4. sql:要执行的sql语句
5. new BeanListHandler<>(Actor.class):将resultSet -> Actor对象 -> 封装到ArrayList
底层使用反射机制去获取Actor类的属性,然后进行封装。
6. 1:就是给sql语句中的 ? 赋值,可以有多个值,因为是可变参数Object... params。
7. 底层得到的resultSet,会在query方法中关闭,PreparedStatment也会被关闭。
*/
for(Actor actor : list){
System.out.print(actor);
}
//释放资源
//这里传入null即可,因为前面已经关闭了。
JDBCUtilsByDruid.Close(null,null,connection);
}
//演示 Apache-DBUtils + Druid 完成返回的结果是单行记录(单个对象)。
@Test
public void testQuerySingle() throws SQLException {
//1.得到连接(用Druid)
Connection connection = JDBCUtilsByDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本Project中。
//3.创建QueryRunner
QueryRunner queryRunner = new QueryRunner();
//4.可以执行相关的方法,返回单个的记录。
String sql = "select * from actor where id = ?";
//new BeanHandler<>(Actor.class):因为返回的是单行记录--->单个对象,所以用BeanHandler。
Actor actor =
queryRunner.query(connection, sql, new BeanHandler<>(Actor.class), 1);
//这里的4:表示给?赋值为4
if (actor != null)
System.out.println(actor);
else
System.out.println("查无此信息!");
//释放资源
JDBCUtilsByDruid.Close(null,null,connection);
}
//演示Apache-DBUtils + Druid 完成查询结果是单行单列---返回的就是Object
@Test
public void testScalar() throws SQLException {
//1.得到连接(用Druid)
Connection connection = JDBCUtilsByDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本Project中。
//3.创建QueryRunner
QueryRunner queryRunner = new QueryRunner();
//4.返回单行单列,返回的就是Object。
String sql = "select name from actor where id = ?";
//说明:返回单行单列用ScalarHandler()
Object obj = queryRunner.query(connection, sql, new ScalarHandler(), 1);
if (obj != null)
System.out.println(obj);
else
System.out.println("查无此人!");
//释放资源
JDBCUtilsByDruid.Close(null,null,connection);
}
//演示Apache-DBUtils + Druid 完成 dml语句(update,insert,delete)
//dml语句用:queryRunner.update()
@Test
public void testDML() throws SQLException {
//1.得到连接(用Druid)
Connection connection = JDBCUtilsByDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本Project中。
//3.创建QueryRunner
QueryRunner queryRunner = new QueryRunner();
//4.这里组织sql语句,完成update,insert,delete。
//String sql = "update actor set name = ? where id = ?";
//String sql = "insert into actor values (?,?,?,?,?)";
String sql = "delete from actor where id = ?";
//执行dml操作是 queryRunner.update(),insert,delete,update都是用这个方法。
//返回值是:受影响的行数
//int affectedRow = queryRunner.update(connection, sql, "TOM","4");
//int affectedRow = queryRunner.update(connection, sql, null,"LUCA","男","2000-09-10","000");
int affectedRow = queryRunner.update(connection, sql, "1");
System.out.println(affectedRow > 0 ? "执行成功" : "表未受改变");
//释放资源
JDBCUtilsByDruid.Close(null,null,connection);
}
}
Java中使用Apache-DBUtils 工具类 + Druid 完成对Actor表的CRUD操作
键盘为伴2025-05-26 19:56
相关推荐
峥嵘life11 分钟前
Android16 311Y3 EAP-TLS 网络连接失败分析与修复总结M-Robots echo16 分钟前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台不可求~1 小时前
多模型路由怎么落地:把任务分流写进项目的最小实现mldong2 小时前
用 DDD 设计工作流引擎:聚合根与充血模型mqiqe3 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“伍一513 小时前
03-文件管理模块-一个看似简单的模块藏着多少细节gugucoding3 小时前
46. 【Java】JUC并发工具:让并发更简单Nebula_g3 小时前
JavaSE基础语法:面向对象高级(代码中的成分)for_ever_love__4 小时前
python基础语法学习: 异常的传递性AC赳赳老秦4 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据