日期:2014-05-20 浏览次数:20926 次
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的理解感觉到怀疑!四楼的这段可以称得上是最优雅的代码!
------解决方案--------------------