转载地址:http://yjck.iteye.com/blog/1221160
public List<Object> getList(String sql,Object[] params,Object obj){ ResultSet rs = null; if(params == null){ rs = this.getRs(sql); }else{ rs = this.getRs(sql, params); } List<Object> list = new ArrayList<Object>(); try { while(rs.next()){ int i = 1; Object inst = obj.getClass().newInstance(); Field[] fields = inst.getClass().getDeclaredFields(); for(Field field : fields){ String setStr = field.getName().substring(0, 1).toUpperCase(); String setMehtodName = "set"+setStr+field.getName().substring(1); Method setMethod = obj.getClass().getMethod(setMehtodName, new Class[]{field.getType()}); setMethod.invoke(inst, new Object[]{rs.getString(i)}); i++; } list.add(inst); } } catch (SecurityException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } return list; }
大概解释下:获得ResultSet后,将其封装成LIST集合,hibernate中可以直接获得,当然,我并没有看hibernate中是如何实现的,我这里只是我的一个实现,需要有一些限制条件。
1.获得bean对象就是这里的inst;
2.获得bean对象的所有field域,就是定义的那些字段;
3.构造每个字段的set方法名称;
4.将从Resultset中拿出来的结果set到Bean对象中
5.将bean对象放到List集合中
6.return List集合
限制条件:要保证Bean对象的顺序和写的查询语句查出的每个字段顺序一致,不然,就张冠李戴了!