private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
/**
** @param <T>
* @param clazz 实体类
* @param sql 执行的sql语句
* @param paramList 参数列表
* @return List<Class>
*/
public <T> List<T> getObjectWithList(Class<T> clazz,String sql,List<Object> paramList)
{
T object = null;
List<T> resultList = new ArrayList<>();
List<Map<String,Object>> listOfMap = new ArrayList<>();
conn = DBConnector.getConnection();
try {
pstmt = conn.prepareStatement(sql);
if(null != paramList && paramList.size() != 0)
{
for(int paramIndexInParamList = 0 ; paramIndexInParamList < paramList.size() ; paramIndexInParamList++)
{
pstmt.setObject(paramIndexInParamList+1, paramList.get(paramIndexInParamList));
}
}
rs = pstmt.executeQuery();
ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
//将查询到的数据从ResultSet中提取出来
while(rs.next())
{
Map<String,Object> map = new HashMap<String,Object>();
for(int columnIndex = 0 ; columnIndex < numberOfColumns ; columnIndex++)
{
String columnName = rsmd.getColumnLabel(columnIndex + 1);
map.put(columnName, rs.getObject(columnName));
}
listOfMap.add(map);
}
//遍历List,将数据塞入实体
if(listOfMap.size() > 0)
{
for(Map<String,Object> map : listOfMap)
{
if(!(map.size() > 0)){ continue;}
object = clazz.newInstance();
for(Map.Entry<String, Object> entry : map.entrySet())
{
String columnName = entry.getKey();
Object value = entry.getValue();
Field field = object.getClass().getDeclaredField(columnName);
field.setAccessible(true);
field.set(object, value);
}
resultList.add(object);
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
DBConnector.release(conn, pstmt, rs);
}
return resultList;
}