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
相关推荐
华仔啊9 分钟前
主线程存了用户信息,子线程居然拿不到?ThreadLocal 背锅间彧20 分钟前
Spring Boot项目中,Redis 如何同时执行多条命令召摇44 分钟前
如何避免写垃圾代码:Java篇vker1 小时前
第 1 天:单例模式(Singleton Pattern)—— 创建型模式我不是混子1 小时前
什么是内存泄漏?程序员小假1 小时前
我们来说说当一个线程两次调用 start() 方法会出现什么情况?SimonKing2 小时前
Archery:开源、一站式的数据库 SQL 审核与运维平台皮皮林55113 小时前
IDEA 源码阅读利器,你居然还不会?卡尔特斯17 小时前
Android Kotlin 项目代理配置【详细步骤(可选)】白鲸开源17 小时前
Ubuntu 22 下 DolphinScheduler 3.x 伪集群部署实录