您的位置:首页 > 其它

ResultSetHandler——DBUtils中封装结果集接口的使用

2017-08-31 16:17 295 查看
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 ;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: