返回的查询数据表的结果是多行的情况:
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
public class DBUtils_Use {
//使用 apache-DBUtils工具类 + druid 完成对表的crud操作
@Test
public void testQueryMany() throws SQLException { //返回结果是多行的情况
//1.得到 连接(druid)
Connection connection = JDBCUtilsByDruid.getConnection();
//2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本project
//3.创建QueryRunner,就可以执行相关的方法,返回ArrayList结果集
QueryRunner queryRunner = new QueryRunner();
//String sql = "select * from actor where id >= ?";
//sql语句也可以查询部分列
String sql = "select id, name from actor where id >= ?";
//解读:
//(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关闭,关闭PreparedStatement
List<Actor> list =
queryRunner.query(connection, sql, new BeanListHandler<>(Actor.class), 1);
System.out.println("输出集合的信息");
for(Actor actor : list) {
System.out.print(actor);
}
//释放资源
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();
//String sql = "select * from actor where id >= ?";
//sql语句也可以查询部分列
String sql = "select * from actor where id = ?";
//解读:
//因为我们返回的单行记录<--->单个对象,使用的Handler是BeanHandler
Actor actor =
queryRunner.query(connection, sql, new BeanHandler<>(Actor.class), 2);
System.out.print(actor);
//释放资源
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,就可以执行相关的方法,返回单行单列,返回的就是Object
QueryRunner queryRunner = new QueryRunner();
//String sql = "select * from actor where id >= ?";
//sql语句也可以查询部分列
String sql = "select name from actor where id = ?";
//解读:
//因为我们返回的是一个对象,使用的Handler是ScalarHandler
Object obj = queryRunner.query(connection, sql, new ScalarHandler(), 2);
System.out.print(obj);
//释放资源
JDBCUtilsByDruid.close(null, null, connection);
}