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
相关推荐
毕设源码-邱学长4 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案rookieﻬ°5 小时前
PHP框架漏洞炸膛坦客5 小时前
单片机/C/C++八股:(二十)指针常量和常量指针兑生6 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Javadaidaidaiyu6 小时前
一文学习 Spring 声明式事务源码全流程总结炸膛坦客7 小时前
单片机/C/C++八股:(十九)栈和堆的区别?零雲7 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别Jay_Franklin7 小时前
Quarto与Python集成使用2401_831824968 小时前
代码性能剖析工具是wzoi的一名用户啊~8 小时前
【C++小游戏】2048