packagedemo;/** QueryRunner数据查询操作;
* 调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r,Oberct...params))
* ResultSetHandler r 结果集的处理方式,传递ResultSetHandler接口实现类
* Object...params SQL语句中的?占位符
*
* 注意:query方法返回值,返回的是T 泛型,具体返回值类型,跟随结果集处理方式变化*/
importjava.util.List;importjava.util.Map;importjava.sql.Connection;importjava.sql.SQLException;importorg.apache.commons.dbutils.QueryRunner;importorg.apache.commons.dbutils.handlers.ArrayHandler;importorg.apache.commons.dbutils.handlers.ArrayListHandler;importorg.apache.commons.dbutils.handlers.BeanHandler;importorg.apache.commons.dbutils.handlers.BeanListHandler;importorg.apache.commons.dbutils.handlers.ColumnListHandler;importorg.apache.commons.dbutils.handlers.MapHandler;importorg.apache.commons.dbutils.handlers.MapListHandler;importorg.apache.commons.dbutils.handlers.ScalarHandler;importdomain.Sort;importjdbcutil.JDBCUtilsConfig;public classQueryRunnerDemo1{private static Connection con=JDBCUtilsConfig.getConnection();public static void main(String[] args) throwsSQLException {//arrayHandler();//arrayListHandler();//beanHandler();//beanListHandler()//columnListHandler();//scalarHandler();//mapHandler();
mapListHandler();
}/*** 结果集第八种处理方法,MapListHandler
* 将结果集每一行存储到Map集合,键:列明,值:数据
* Map集合过多,存储到List集合
*@throwsSQLException*/
public static void mapListHandler() throwsSQLException{
QueryRunner qr=newQueryRunner();
String sql="select * from sort";//调用方法query,传递结果集实现类MapListHandler
List> list=qr.query(con, sql,newMapListHandler());//遍历集合List
for(Mapmap:list){for(String key:map.keySet()){
System.out.print(key+"....."+map.get(key)+"\t");
}
System.out.println();
}
}/*** 结果集的第七种处理方法,MapHandler
* 将结果集第一行数据,封装到Map集合中
* Map 键:列名 值:这列的数据
*@throwsSQLException*/
public static void mapHandler() throwsSQLException{
QueryRunner qr=newQueryRunner();
String sql="select * from sort";//调用方法query,传递结果集实现类MapHandler//返回值:Map集合,Map接口实现类,泛型
Map map=qr.query(con, sql,newMapHandler());for(String key:map.keySet()){
System.out.println(key+"....."+map.get(key));
}
}/*** 结果集第六种处理方法,ScalarHandler
* 对于查询后,只有1个结果
*@throwsSQLException*/
public static void scalarHandler() throwsSQLException{
QueryRunner qr=newQueryRunner();
String sql="select count(*) from sort";//调用方法query,传递结果集处理实现类scalarHandler
Long count=qr.query(con, sql,new ScalarHandler());
System.out.println(count);
}/*** 结果集第五种处理方法,ColumnListHandler
* 结果集,指定列的数据,存储到List集合
* List 每个列数据类型不同
*@throwsSQLException*/
public static void columnListHandler() throwsSQLException{
QueryRunner qr=newQueryRunner();
String sql="select * from sort";//调用方法query,传递结果集实现类//实现类构造方法中,使用字符串的列名
List list=qr.query(con, sql,new ColumnListHandler("sname"));for(Object obj:list){
System.out.println(obj);
}
}/*** 结果集第四种处理方法,BeanListHandler
* 将数据结果集的每一行数据,封装成javaBean对象
* 多个JavaBean对象封装到List集合中
*@throwsSQLException
**/
public static void beanListHandler() throwsSQLException{
QueryRunner qr=newQueryRunner();
String sql="select * from sort";//调用方法传递结果集的实现类 BeanListHandler
List result=qr.query(con, sql,new BeanListHandler(Sort.class));for(Sort r:result){
System.out.println(r);
}
}/*** 结果集的第三种处理方法,BeanHandler
* 将结果集的第一行的数据,封装成JavaBean对象 *
* 注意:被封装成数据到JavaBean对象,Sort类必须有空参数构造*/
public static void beanHandler() throwsSQLException{
QueryRunner qr=newQueryRunner();
String sql="select * from sort where sid=20";//调用方法,传递结果集实现类BeanHandler//BeanHandler(Class type)
Sort s=qr.query(con,sql, new BeanHandler(Sort.class));
System.out.println(s);
}/*** 结果集第二种处理方法,ArrayListHandler
* 将结果集的每一行,封装到对象数组中,出现很多对象数据
* 对象数组存储到List集合
*@throwsSQLException
**/
public static void arrayListHandler() throwsSQLException{
QueryRunner qr=newQueryRunner();
String sql="select * from sort where sid>10";//调用query方法,结果集处理的参数上,传递实现类ArrayListHandler//方法返回值 每行是一个对象数据,存储到List
List result =qr.query(con, sql,newArrayListHandler());//集合的遍历
for(Object[] objs:result){for(Object obj:objs){
System.out.print(obj+"\t");
}
System.out.println();
}
}/*** 结果集第一种处理方法,ArrayHandler
* 将结果集的第一行存储到对象数组中 Object[]
*@throwsSQLException*/
public static void arrayHandler() throwsSQLException{
QueryRunner qr=newQueryRunner();
String sql="select * from sort where sid=10";//调用方法query执行查询,传递连接对象,SQL语句,结果集处理方式实现类//返回对象数组
Object[] result=qr.query(con,sql,newArrayHandler());
System.out.println(result.length);for(Object obj:result){
System.out.print(obj+"\t");
}
}
}