基本介绍:
1.commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的封装,使用dbutils能极大简化JDBC编码的工作量
2.DbUtils类
3.QueryRunner类:该类封装了SQL的执行,是线程安全的。可以实现增、删、改、查、批处理
4.使用QueryRunner类实现了查询
5.ResultSetHandler接口:该接口用于处理java.sql.ResultSet,将数据按要求转换为另一种形式

package com.jh.datasource;
//使用apache-DBUtils工具类和druid完成对表的crud操作
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
public class DBUtils_USE {
//查询返回结果是对行的情况
@Test
public void testQueryMany() throws SQLException {
//1.得到连接(druid)
Connection connection = JDBCUtilsDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,在加入Project
//3.创建QueryRunner
QueryRunner queryRunner = new QueryRunner();
//4.组织SQL语句
String sql = "select * from admin02 where id >= ?";
//5.queryRunner可以执行相关的方法,返回ArrayList结果集
/**
* 1.query方法就是执行sql语句,得到resultset 并封装到 ArrayList集合中
* 2.返回集合
* 3.connection:连接
* 4.sql:执行的sql语句
* 5.new BeanListHandler<>(Admin02.class):
* 在resultset结果集中的Admin02类的对象封装到ArrayList中
* 6.1:是给sql语句中的?赋值的,可以有多个值,因为是可变参数
* 7.底层得到的resultset,会在query中关闭,关闭PreparedStatement,
*/
List query = queryRunner.query(
connection, sql, new BeanListHandler<>(Admin02.class), 100);
//6.打印出信息
System.out.println("打印出结果集中的信息...");
for (Admin02 admin02 : query){
System.out.println(admin02);
}
//7.释放资源
JDBCUtilsDruid.close(null,null,connection);
}
}

package com.jh.datasource;
//演示apache-dbutils和druid完成 返回的结果是单行记录(单个对象)
// 返回结果是单行单列的记录
//
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.SQLException;
public class TestQuerySingle {
@Test
//apache-dbutils和druid完成 返回的结果是单行记录(单个对象)
public void testQuerySingle() throws SQLException {
//1.得到连接(druid)
Connection connection = JDBCUtilsDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,在加入Project
//3.创建QueryRunner
QueryRunner queryRunner = new QueryRunner();
//4.组织SQL语句,返回单个对象
String sql = "select * from admin02 where id = ?";
//5.BeanHandler:返回单个对象
Admin02 query = queryRunner.query(
connection, sql, new BeanHandler<>(Admin02.class), 10);
//6.输出信息
System.out.println(query);
//7.释放资源
JDBCUtilsDruid.close(null,null,connection);
}
//apache-dbutils和druid完成 查询结果是单行单列的记录,返回的是object
@Test
public void testScalar() throws SQLException {
//1.得到连接(druid)
Connection connection = JDBCUtilsDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,在加入Project
//3.创建QueryRunner
QueryRunner queryRunner = new QueryRunner();
//4.组织SQL语句,返回单个对象
String sql = "select username from admin02 where id = ?";
//5.ScalarHandler:返回结果是单行单列的记录
Object query = queryRunner.query(connection, sql, new ScalarHandler(), 10);
//6.输出信息
System.out.println(query);
//7.释放资源
JDBCUtilsDruid.close(null,null,connection);
}
}
单行:

单行单列:

package com.jh.datasource;
//演示apache-dbutils和druid完成 DML
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.SQLException;
public class TestDML {
@Test
public void testDML() throws SQLException {
//1.得到连接(druid)
Connection connection = JDBCUtilsDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,在加入Project
//3.创建QueryRunner
QueryRunner queryRunner = new QueryRunner();
//4.组织SQL语句,完成DML(insert、delete、update)
String sql = "update Admin02 set username = ? where id = ?";
//5.返回的值是受影响的行数(affected受影响)
int affectedRow = queryRunner.update(connection, sql, "jason", 2);
//6.输出信息
System.out.println(affectedRow > 0 ? "执行成功" : "执行未影响表");
//7.释放资源
JDBCUtilsDruid.close(null,null,connection);
}
}
