请教一个典型的struts和hibernate结合查询数据库的技术问题,帮帮我,谢谢你.

xieyunchao 2008-07-18 07:06:00
下面的代码中我用hibernate查询出我想要的结果集A,在for循环内,还有一个查询语句B(红色代码所示).这样,A结果集中有多少条数据那么B语句就会执行多少次,因为它依赖于A结果集.这样一来.我的这段代码的效率就很低.
请问一下高手,有没有一种更好的方法实现我的这种功能.多谢了.



public Page findWorklistAlterPage(int currentPage) throws Exception {
StringBuffer sb=null;
Page page=null;
sb = new StringBuffer("select A.id,A.pactId,A.applicationperson,A.auditperson,A.alterationdate,W.worklistname,P.pactName,A.alterationId from Alterationmanage as A,Worklist as W,Pact as P where 1=1 ");
sb.append("and A.alterationId=W.id ");
sb.append("and P.id=A.pactId");
int pageSize;
pageSize = com.chinantn.oa.config.Globals.pageSize;
List newlist = new ArrayList();
String hql=null;
sb.append(" AND W.state='01'");
sb.append(" AND W.deleted='00'");
sb.append(" ORDER BY A.alterationdate desc");
hql=sb.toString();
try {
//查询数据库
page = dao.findWorklistAlterPage(hql, currentPage, pageSize);
} catch (Exception e) {
e.printStackTrace();
}
List list = page.getList();//list存放结果集
Object[] obj;
PayAmountManager pam=ManagerFactory.getPayAmountManager();
List alist=pam.getPayAmountList();
//遍历结果集,想在页面上显示
for (int i = 0; i < list.size(); i++) {
HashMap map = new HashMap();
obj = (Object[])list.get(i);
map.put("id", (String)obj[0]);
map.put("pactId",obj[1]);
map.put("applicationperson", obj[2]);
map.put("auditperson", obj[3]);
map.put("alterationdate", obj[4]);
map.put("worklistname", obj[5]);
map.put("pactName",obj[6]);
map.put("alterationId", obj[7]);
//下面的语句是从数据库中得到的.在循环内,是不是太慢了.但是它还得在循环内,因为它的结果 集 是随A结果集变化还变化的.
Pact pact=ManagerFactory.getPactManager().findById((String)obj[1]);
String finishFlag=pact.getFinishflag();

map.put("finishFlag", finishFlag);

for(int j=0;j<alist.size();j++) {
PayAmount pa=(PayAmount)alist.get(j);
String worklistId=pa.getWorklistId();
if(((String)map.get("alterationId")).equals(worklistId)) {
map.put("flag", "noShow"); //是否已对该工程量清单做过计量
}
}
newlist.add(map);
}
page.setList(newlist);
return page;
}
...全文
75 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mikesu 2008-07-18
  • 打赏
  • 举报
回复
能不能说明一下你的数据库表是怎么样的。
还有要查询的结果。
这要看你的代码太难了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧