java吧 关注:1,280,302贴子:12,798,687
  • 0回复贴,共1

求帮忙解决关于list中加map,后面的map总会覆盖的前面的值

只看楼主收藏回复

//这是查所有的
public <T> List<T> search(Class<T> clazz,String sql,Object ... args){
T entity =null;
List<T> list = new ArrayList<T>();
List<Map<String,Object>> listM = new ArrayList<Map<String,Object>>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
for(int i = 0 ;i < args.length;i++){
ps.setObject(i+1, args[i]);
}
rs = ps.executeQuery();
//解析sql
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
Map<String,Object> map=null;
while(rs.next()){
map = new HashMap<String,Object>();
for(int i = 0 ; i < numberOfColumns;i++){
String columnLabel = rsmd.getColumnLabel(i+1);
Object columnValue = rs.getObject(i + 1);
map.put(columnLabel, columnValue);
}
listM.add(map);
System.out.println(map);
}
for(Map<String,Object> m:listM){
for(Entry<String,Object> entry:m.entrySet()){
String field = entry.getKey();
Object value = entry.getValue();
entity = clazz.newInstance();
ReflectionUtils.setFieldValue(entity, field, value);
}
list.add(entity);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
release(conn, ps, rs);
return list;
}


IP属地:湖南1楼2016-11-03 13:31回复