ArrayHandler, ArrayListHandler, BeanHandler, BeanListHandler, ColumnListHandler, KeyedHandler, MapHandler, MapListHandler, ScalarHandler
(了解)ArrayHandler, 将查询结果的第一条记录封装成数组,返回 (了解)ArrayListHandler, 将查询结果的每一条记录封装成数组,将每一个数组放入list中返回 ★★BeanHandler, 将查询结果的第一条记录封装成指定的bean对象,返回 ★★BeanListHandler, 将查询结果的每一条记录封装成指定的bean对象,将每一个bean对象放入list中 返回. (了解)ColumnListHandler, 将查询结果的指定一列放入list中返回 (了解)MapHandler, 将查询结果的第一条记录封装成map,字段名作为key,值为value 返回 ★MapListHandler, 将查询结果的每一条记录封装map集合,将每一个map集合放入list中返回★ScalarHandler,针对于聚合函数 例如:count(*) 返回的是一个Long值
/** * ResultSetHandler.java * 封装结果集接口演示类 */ package com.dbutils.curd; import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.junit.Test; import com.utils.DataSourceUtils; public class ResultHandleDemo { private static final ResultSetHandler BeanHandler = null; @Test public void arrayListHandler() throws SQLException { QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()) ; //String sql = "select * from category" ; // //将查询结果的第一条记录封装成数组返回 // String sql = "select * from category" ; // Object [] query = qr.query(sql, new ArrayHandler()) ; // System.out.println(Arrays.toString(query)); // //将查询结果的每一条记录封装成数组,将每一个数组放入list中返回 // Object obj1 = qr.query(sql, new ArrayListHandler()) ; // System.out.println(obj1); // List<Object[]> list = qr.query(sql, new ArrayListHandler()) ; // for(Object[] obj : list) { // System.out.println(Arrays.toString(obj)); // } //(★★)将查询结果的第一条记录封装成指定的bean对象,返回 // Category bean = qr.query(sql, new BeanHandler<>(Category.class)) ; // System.out.println(bean); // // (★★)将将查询结果的每一条记录封装成指定的bean对象,将每一个bean对象放入list中,返回 // List<Category> list = qr.query(sql, new BeanListHandler<>(Category.class)) ; // for(Category bean : list) { // System.out.println(bean); // } // ColumnListHandler 将查询结果的指定一列放入List中返回 // //MapHandler 将查询结果的第一条记录封装成map,字段名做为key,值为value,返回 // Map<String,Object> map= qr.query(sql, new MapHandler()) ; // System.out.println(map); // // (★)MapListHandler 将查询结果的每一条记录封装成map集合,将每一个map集合放入List返回 // List<Map<String,Object>> list = qr.query(sql,new MapListHandler()) ; // for(Map<String,Object> map : list) { // System.out.println(map); // } // (★)ScalarHandler针对于聚合函数,例如count() 返回的是一个Long值 String sql = "select count(*) from category" ; Object obj = qr.query(sql,new ScalarHandler()) ; System.out.println(obj.getClass().getName()); // 返回的类型:java.lang.Long } } /** * DataSourceUtils.java * 为CURDDemo类中QueryRunner函数提供引用参数 * 并且在底层自动创建连接,创建语句执行者,释放资源 * */ package com.utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class DataSourceUtils { private static ComboPooledDataSource ds = new ComboPooledDataSource() ; /** * 获取数据源 * @return 连接池 */ public static DataSource getDataSource() { return ds ; } /** * 获取连接 * @return 连接 * @throws SQLException */ public static Connection getConnection() throws SQLException { return ds.getConnection() ; } /** * 释放资源 * @param conn * @param st * @param rs */ public static void closeResource(Connection conn,Statement st,ResultSet rs) { closeRs(rs) ; closeSt(st) ; closeConn(conn) ; } /** * 释放连接 * @param conn */ public static void closeConn(Connection conn) { if(conn != null) { try { conn.close() ; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } conn = null ; } } /** * 释放语句执行者 * @param st */ public static void closeSt(Statement st) { if(st != null) { try { st.close() ; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } st = null ; } } /** * 释放结果集 * @param rs */ public static void closeRs(ResultSet rs) { if(rs != null) { try { rs.close() ; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } rs = null ; } } }