浏览 2252 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-20
public <T>Collection<T> query(String sql,Class<T> clazz){ Connection conn=null; PreparedStatement stat=null; ResultSet rs=null; Object object=null; List<T> list=new ArrayList<T>(); try{ conn=DataModel.conn(); stat=conn.prepareStatement(sql); rs=stat.executeQuery(); //取返回列 oldcolumns=getColumnNameCN(rs.getMetaData()); //包装class while(rs.next()){ object=clazz.newInstance(); //-----(1)------- createClazz(object,rs); list.add((T) object); } return list; }catch(Exception e){ PringWarn(QUERY_SQL_ERROR+sql, e); }finally{ DataModel.close(rs, stat, conn); } return list; } public void createClazz(Object object,ResultSet rs) throws Exception{ for (int i = 0; i < oldcolumns.length; i++) { Ognl.setValue(oldcolumns[i], object, rs.getObject(oldcolumns[i])); } } 上面代码-----(1)--------那里可能是慢的原因,因为我测过,直接包装例 Largess largess=new Largess; largess.setId(rs.getInt("ID")); largess.setName(rs.getString("NAME")); 这样速度大体是3秒左右,而使用上面ognl自动包装那样却花35秒,请问这样我该怎么办,因为这个方法我想放到basedao里面,任务对象直接传sql语句和对象就可以自己包装在里面,如果使用setId之类的,我就想不出怎么通用了! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |