用于执行查询语句
以HashMap的形式返回单条记录.
以HashMap列表的形式返回多条记录.
package com.common.businesslogic;
import com.exception.GFPortalException;
import com.util.CommonUtility;
import com..util.ConnMgr;
import org.apache.log4j.Logger;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Description : 业务逻辑查询帮助类
*
* Author : husthxd
* Date: 2005-02-28
* Time: 14:51:43
* Version 1.0
*/
public class BusinessLogicQueryHelper {
static Logger logger = Logger.getLogger(BusinessLogicQueryHelper.class);
private BusinessLogicQueryHelper() {
}
/**
* @return
*/
public static BusinessLogicQueryHelper factory() {
return new BusinessLogicQueryHelper();
}
//设置参数
/**
* @param pstmt
* @param values
* @throws SQLException
*/
private void setParameters(PreparedStatement pstmt, List values)
throws SQLException {
for (int i = 0; i < values.size(); i++) {
logger.info("第" + i + "个参数为:" + values.get(i));
try {
pstmt.setObject(i + 1, values.get(i));
} catch (Exception e) {
logger.debug("不能设置参数 : " + e);
throw new SQLException("不能设置参数 : " + e);
}
}
}
/**
* 执行sql,不带参数并以List的形式获取结果集
*
* @param sqlstmt
* @return
* @throws GFPortalException
*/
public final List getRecordSet(Connection conn, String sqlstmt) throws GFPortalException {
return getRecordSet(conn, sqlstmt, null);
}
/**
* 获取记录集列表
*
* @param conn
* @param sqlstmt
* @param values
* @return
* @throws GFPortalException
*/
public final List getRecordSet(Connection conn, String sqlstmt, List values) throws GFPortalException {
//HashMap集合
List resultList = new ArrayList();
//执行语句
PreparedStatement pstmt;
ResultSet rs = null;
//连接
try {
//获取sql语句
pstmt =
conn.prepareStatement(sqlstmt,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//如果列表对象不为空并且列表中有数据,设置参数
if (!CommonUtility.isNull(values) && !values.isEmpty()) {
setParameters(pstmt, values);
}
} catch (Exception e) {
logger.debug("查询初始化失败!" + e);
throw new GFPortalException("查询初始化失败!" + e);
}
//获取结果集
try {
rs = pstmt.executeQuery(); //结果集
ResultSetMetaData rsmd = rs.getMetaData(); //元数据
while (rs.next()) {
//构造HashMap
HashMap record = new HashMap();
//获取其中的一条记录
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
//放入到HashMap中
record.put(rsmd.getColumnName(i).toLowerCase(),
rs.getObject(i));
}
//放入结果集列表中
resultList.add(record);
}
} catch (SQLException e) {
logger.debug("查询出错!" + e);
throw new GFPortalException("查询出错!" + e.getMessage());
} finally {
try {
ConnMgr.closePreparedStatement(pstmt);
rs.close();
pstmt.close();
} catch (Exception e2) {
}
}
//返回HashMap
return resultList;
}
/**
* 获取单条记录的Map
*
* @param conn
* @param sqlstmt
* @param values
* @return
* @throws GFPortalException
*/
public final HashMap getRecord(Connection conn, String sqlstmt, List values) throws GFPortalException {
HashMap record = new HashMap();
try {
List recordList = getRecordSet(conn, sqlstmt, values);
record = (HashMap) recordList.get(0);
} catch (Exception e) {
logger.debug("获取信息出错!" + e);
throw new GFPortalException("获取信息出错!" + e);
}
//返回HashMap
return record;
}
/**
* @param conn
* @param sqlstmt
* @return
* @throws GFPortalException
*/
public final HashMap getRecord(Connection conn, String sqlstmt) throws GFPortalException {
return getRecord(conn, sqlstmt, null);
}
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/6906/viewspace-21700/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/6906/viewspace-21700/