日期:2014-05-20 浏览次数:20707 次
public class CommonDAOHibImpl extends HibernateDaoSupport implements CommonDAO { /** * 传一个hql语句过来,把结束存进pageResult */ public void listByPage(String hql, PageResult pageResult) { if (null==hql || pageResult== null ){ return ; } Query query = this.getSession().createQuery(hql); query.setFirstResult(pageResult.getFirstRec()); query.setMaxResults(pageResult.getPageSize()); List ret = query.list(); pageResult.setList(ret); String queryString = ""; if (hql.toUpperCase().indexOf("SELECT") != -1) { int i = query.getQueryString().toUpperCase().indexOf("FROM"); queryString = "Select count(*) " + hql.substring(i,hql.length()); } else { queryString = "Select count(*) " + hql; } // 去掉ORDER BY 的部分 int j = queryString.toUpperCase().lastIndexOf("ORDER"); if (j!=-1){ queryString = queryString.substring(0, j); } Query cquery = this.getSession().createQuery(queryString); cquery.setCacheable(true); int recTotal = ((Integer)cquery.iterate().next()).intValue(); pageResult.setRecTotal(recTotal); } }
------解决方案--------------------
4楼的请问你用的是什么技术。hibernate?
public class CommonDAOHibImpl extends HibernateDaoSupport implements CommonDAO
继承HibernateDaoSupport类有什么作用啊?CommonDAO接口是不是定义的listByPage(String hql, PageResult pageResult)方法啊?
query.setFirstResult(pageResult.getFirstRec());
query.setMaxResults(pageResult.getPageSize());
这两句是什么意思 啊?
Query cquery = this.getSession().createQuery(queryString);这个得到的是什么啊?
cquery.setCacheable(true);什么意思啊?
int recTotal = ((Integer)cquery.iterate().next()).intValue(); 什么意思啊?
FormBean myForm = (FormBean) form;
这句话是不是写错了啊?
应该是BaseForm myForm =new BaseForm();
------解决方案--------------------
自己感觉四楼代码非常好,重用性很高!不知道为什么五楼这样说,对他是否理解认真看待此贴对hibernate的理解感觉到怀疑!四楼的这段可以称得上是最优雅的代码!
------解决方案--------------------