ResultSetHandler八种结果集处理方式(八个实现类)

刚开始学ResultSetHandler前几种实现类学的有点慢,后面那几种实现类和前几种大相径庭,只要模仿着前面,后面也很容易就自己敲出来了,所以学起来就比较快了。

特别注意:第八种MapListHandler()他取数据库中的数据的时候,为什么不会打乱顺序取出来,为什么是有序的?因为它的源码是class org.apache.commons.dbutils.BasicRowProcessor$CaseInsensitiveHashMap继承了

" private static class CaseInsensitiveHashMap extends LinkedHashMap"

   LinkedHashMap,所以有序。

代码如下:

package cn.itcast.jdbc2;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import cn.itcast.domain.Sort;
import cn.itcast.jabcutil.JDBCUtilsConfig;

/* 调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r, Object..params)
*  ResultSetHandler r 结果集的处理方式,传递ResultSetHandler接口实现类
*  Object..params SQL语句中的?占位符
 注意: query方法返回值,返回的是T 泛型, 具体返回值类型,跟随结果集处理方式变化
*/
public class QueryRunnerDemo1 {
	public static void main(String[] args) throws SQLException {
		// arrayHandler();
		//arrayListHandler();
		//beanHandler();
		//beanListHandler();
		//columnListHandler();
		//scalarHandler();
		//mapHandler();
		//mapListHandler();
	}

	private static Connection con = JDBCUtilsConfig.getConnection();

	/*
	 * 结果集第一种处理方法, ArrayHandler 将结果集的第一行存储到对象数组中 Object[]
	 */
	public static void arrayHandler() throws SQLException {
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT *FROM sort";
		Object[] result1 = qr.query(con, sql, new ArrayHandler());
		for (Object obj : result1) {
			System.out.print(obj + "\t");
		}
	}

	/*
	 * 结果集第二种处理方法,ArrayListHandler 将结果集的每一行,封装到对象数组中, 出现很多对象数组 对象数组存储到List集合
	 */
	public static void arrayListHandler() throws SQLException {
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT *FROM sort";
		qr.query(con, sql, new ArrayListHandler());
		List result2 = qr.query(con, sql, new ArrayListHandler());
		System.out.println(result2.getClass());
		for (Object[] objs : result2) {
			for (Object obj : objs) {
				System.out.print(obj + "  ");
			}
			System.out.println();
		}
	}

	/*
	 * 结果集第三种处理方法,BeanHandler 将结果集的第一行数据,封装成JavaBean对象 注意: 被封装成数据到JavaBean对象,
	 * Sort类必须有空参数构造
	 */
	public static void beanHandler() throws SQLException {
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT *FROM sort";
		Sort s = qr.query(con, sql, new BeanHandler(Sort.class));
		System.out.println(s);
	}
	/*
	 *  结果集第四种处理方法, BeanListHandler
	 *  结果集每一行数据,封装JavaBean对象
	 *  多个JavaBean对象,存储到List集合
	 */
	public static void beanListHandler()throws SQLException{
		QueryRunner qr = new QueryRunner();
		String sql = "SELECT * FROM sort ";
		//调用方法query,传递结果集处理实现类BeanListHandler
		List list = qr.query(con, sql, new BeanListHandler(Sort.class));
		for(Sort s : list){
			System.out.println(s);
		}
	}
	/*
	 *  结果集第五种处理方法,ColumnListHandler
	 *  结果集,指定列的数据,存储到List集合
	 *  List 每个列数据类型不同
	 */ 
	public static void columnListHandler() throws SQLException {
    	 QueryRunner qr = new QueryRunner();
 		String sql = "SELECT * FROM sort ";
 		List result4 = qr.query(con, sql, new ColumnListHandler("sname"));
 		for(Object obj:result4) {
 			System.out.println(obj);
 		}
     }
	/*
	 *  结果集第六种处理方法,ScalarHandler
	 *  对于查询后,只有1个结果
	 */
	public static void scalarHandler() throws SQLException {
		 QueryRunner qr = new QueryRunner();
	 		String sql = "SELECT COUNT(*) FROM sort ";
	 		long count=qr.query(con, sql, new ScalarHandler());
	 		System.out.println(count);
	}
	/*
	 *  结果集第七种处理方法,MapHandler
	 *  将结果集第一行数据,封装到Map集合中
	 *  Map<键,值> 键:列名  值:这列的数据
	 */
	public static void mapHandler() throws SQLException {
		QueryRunner qr = new QueryRunner();
 		String sql = "SELECT * FROM sort ";
 	Map map=qr.query(con, sql, new MapHandler());
 	for(String key:map.keySet()) {
 		System.out.println(key+"..."+map.get(key));
 	}
	}
	/*
	 *  结果集第八种处理方法,MapListHandler
	 *  将结果集每一行存储到Map集合,键:列名,值:数据
	 *  Map集合过多,存储到List集合
	 */
	public static void mapListHandler() throws SQLException {
		QueryRunner qr = new QueryRunner();
 		String sql = "SELECT * FROM sort ";
 		List> list= qr.query(con, sql, new MapListHandler());
 		for(Map map:list) {
 			System.out.println("#######"+map.getClass());
 			for(String key:map.keySet()) {  
 				System.out.print(key+"  "+map.get(key)+" ");
 			}
 			System.out.println();
 		}
	}
	
}
  
  

 

你可能感兴趣的:(JDBC)