在服务器接收到请求后交由后台逻辑处理,这可能需要查询数据库,在分页技术中需要查询的主要是查询内容的记录总量以及当前页的内容。
Hibernate框架支持分页处理,实现如下:
(1)hql语句:
hql = "select count(*) from ContractBean where contract_id like '%" + chars + "%'"; //查询总量
hql = "from ContractBean where contract_id like '%" + chars + "%'";
//查询当前页记录
(2)执行查询的java代码如下:
public class ContractDaoImpl extends HibernateDaoSupport {
public int countContracts(String hql) {
//在不同版本的Hibernate中返回的类型不一样,有的事Long有的是Integer,需要注意
Long count = (Long)getHibernateTemplate().find(hql).listIterator().next();
return count.intValue();
}
public List<ContractBean> curPageContracts(final String hql, final int pageIndex, final int pageSize) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
org.hibernate.Query query = session.createQuery(hql);
query.setMaxResults(pageSize); //页显示的记录条数
int beginIndex = (pageIndex-1)*pageSize; //记录起始位置
query.setFirstResult(beginIndex);
return query.list();
}
});
}
}
总结
根据具体的需求生成具体的hql语句,然后交由hibernate框架处理,其中在Dao类中没有显示的写明SessionFactory,所使用的SessionFactory在spring中配置
相关内容
(1)Web开发:分页技术的实现(上)——jBootstrapPage.js+ajax
(2)Web开发:分页技术的实现(中)——Struts2+json
(3)Web开发:Struts2 Spring Hibernate整合(一)——Struts2的使用
(4)Web开发:Struts2 Spring Hibernate整合(二)——Spring的使用