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 ;
}
}
}
(了解)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 ;
}
}
}
相关文章推荐
- 从零开始学JDBC--1.17 使用DbUtils组件实现CRUD和结果集快速封装
- 使用mybatis自动实现接口封装返回结果集
- 【龙芯1c库】封装软件延时接口和使用示例
- JDBC的轻量级封装DBUtils开源组件的使用(一)
- 使用DbUtils实现增删改查——ResultSetHandler接口的实现类
- 第十七天dbutils的使用------Commons DbUtils(Apache)第三方的:只是对JDBC编码进行了简单的封装
- 【龙芯1c库】封装模拟I2C接口和使用示例
- 使用Colseable接口封装流关闭工具类IOClose
- 使用SWIG将CRF++封装成JNI接口
- JDBC的轻量级封装DBUtils开源组件的使用(二)
- 使用DbUtils实现增删改查——ResultSetHandler接口的实现类
- 使用接口封装变化
- 使用接口进行封装以及数据传输
- DBUtils 的使用 之 ResultSetHandler的实现 类;ArrayListHandler: 将多条记录封装到一个装有Object[]的List集合中。BeanHandler:(常用)将
- 异常jpg图片判断接口封装, 使用IJG JPEG库
- 使用php封装APP接口
- jdbc的简单封装(使用map处理结果集)
- DBUtils使用(对jdbc的封装)
- 使用ffmpeg接口将YUV编码封装为文件
- gsoap库的使用技巧(使用类封装和接口的区别)