/*
* 第五种查询方式:使用ColumnListHandler
* ColumnListHandler会把结果集中指定列的数据封装到一个List集合中
* 如果不指定列,则默认使用第一列数据存储到List集合中
* ColumnListHandler()
* ColumnListHandler(int columnIndex) 列号1,2,3,4
* ColumnListHandler(String columnName) 列名
*/
@Test
public void columnListHandler(){
try {
//拼接查询sql语句
String sql = "SELECT * FROM category";
//调用QueryRunner中的query方法执行查询sql语句,结果集传入ColumnListHandler
//返回一个List集合,因为列的数据类型不同,所有元素使用Object类型
List<Object> list = qr.query(sql, new ColumnListHandler("cname"));
for (Object object : list) {
System.out.println(object);
}
} catch (Exception e) {
System.out.println(e);
}
}
/*
* 第四种查询方式:使用BeanListHandler(重点)
* BeanListHandler会把多个条数据封装到多个JavaBean对象中
* 多个JavaBean对象存储到List集合中
*
* 注意:
* JavaBean中必须有空参数构造方法
*/
@Test
public void beanListHandler(){
try {
//拼接查询sql语句
String sql = "SELECT * FROM category";
//调用QueryRunner中的query方法执行查询sql语句,结果集传入BeanListHandler
List<Category> list = qr.query(sql, new BeanListHandler<>(Category.class));
//遍历存储Category的list集合
for (Category category : list) {
System.out.println(category);
}
} catch (Exception e) {
System.out.println(e);
}
}
/*
* 第三种查询方式:使用BeanHandler(重点)
* BeanHandler会把结果集的第一条数据,封装到指定的JavaBean对象中
* 构造方法:
* BeanHandler(Class<T> type) 传递JavaBean对象的class文件对象
* BeanHandler内部会根据传递的class文件对象使用反射技术创建JavaBean对象,把查询的结果集中第一行数据存储到JavaBean中
* 相当于
* Category c = new Category();
* c.setXXX(xxx);
* c.setXXX(xxx);
* c.setXXX(xxx);
* 注意:
* JavaBean中必须有空参数构造方法
*/
@Test
public void beanHandler(){
try {
//拼接查询sql语句
String sql = "SELECT * FROM category";
//调用QueryRunner中的query方法执行查询sql语句,结果集传入BeanHandler
Category cate = qr.query(sql, new BeanHandler<>(Category.class));
System.out.println(cate);
} catch (Exception e) {
System.out.println(e);
}
}
/*
* 第二种查询方式:使用ArrayListHandler
* ArrayListHandler中会把多条结果封装到多个对象数组中
* 一个对象数组封装一行数据
* 多个对象数组需要存储到list集合中
*/
@Test
public void arrrayListHandler(){
try {
//拼接查询sql语句
String sql = "SELECT * FROM category where cid = ?";
sql = "SELECT * FROM category where cid in(?,?)";
//调用QueryRunner中的query方法执行查询sql语句,传入ArrayListHandler结果集
List<Object[]> list = qr.query(sql, new ArrayListHandler(), 1,3);
//遍历集合
for (Object[] objects : list) {
//遍历对象数组
for (Object obj : objects) {
System.out.print(obj+" ");
}
System.out.println();//换行
}
} catch (Exception e) {
System.out.println(e);
}
}
/*
* 第一种查询方式:使用ArrayHandler
* ArrayHandler会把结果集第一条数据封装到一个对象(Object)数组中
* 数组中的每一个元素,就是第一条数据数据的每一列的值
*/
@Test
public void arrayHandler(){
try {
//拼接查询sql语句
String sql = "SELECT * FROM category";
//调用QueryRunner中的query方法执行查询sql语句,传入ArrayHandler结果集
Object[] objs = qr.query(sql, new ArrayHandler());
//遍历数组
for (Object obj : objs) {
System.out.print(obj+" ");
}
} catch (Exception e) {
System.out.println(e);
}
}
}
JDBC连接池和DBUtils(5)
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://www.heiqu.com/01bdd1d8f1daf69cafde75184d971a2c.html