注:需导入BeanUtil和日志工具包,方可运行
package com.xust.xian.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.beanutils.BeanUtils;
/**
*
* @author wudou
* @version 1.0
*
*/
public class SelectUtils {
/**
*
* @param sql 查询的sql语句
* @param parameterValues sql语句的占位符值,以数组形式传入
* @param clazz 需要封装的对象类型,采用泛型
* @return List 以list返回查询结果
*/
public static <T> List<T> selectCommon(String sql,
Object[] parameterValues, Class<T> clazz) {
Connection conn = null;
PreparedStatement pstmt = null;
List<T> arrlist = null;
try {
// 获取连接
conn = JdbcUtils.getConnection();
// 预编译sql语句
pstmt = conn.prepareStatement(sql);
// 设置参数
int count = pstmt.getParameterMetaData().getParameterCount();
// 创建list集合
arrlist = new ArrayList<T>();
//判断数组是否不为空,且数组长度不等于0,设置占位符的值
if (parameterValues != null && parameterValues.length != 0) {
for (int <span style="color:#FF6666;"><span style="color:#000000;">i =</span> </span>0; i < count; i++) {
pstmt.setObject(i + 1, parameterValues[i]);
}
}
//执行sql语句,的到结果集
ResultSet rs = pstmt.executeQuery();
//获取结果集元数据
ResultSetMetaData rsMetaData = rs.getMetaData();
//获取列数
int columnCount = rs.getMetaData().getColumnCount();
//采用BeanUtils对结果集进行数据封装
while (rs.next()) {
T t = null;
for (int i = 0; i < columnCount; i++) {
String columnName = rsMetaData.getColumnName(i + 1);
Object columnValue = rs.getObject(columnName);
t = clazz.newInstance();
BeanUtils.setProperty(t, columnName, columnValue);
}
arrlist.add(t);
}
} catch (Exception e) {
e.printStackTrace();
}
//返回封装好的list
return arrlist;
}
}