Spring+Hibernate 分页处理
来源:www.javaif.com
作者:漫天飞雪
时间:2007-11-05
Tag:
点击:
做Spring+Hibernate分页处理要使用到一个接口org.springframework.orm.hibernate3.HibernateCallback 该接口中有一个函数 Object doInHibernate (Session session) 我从文档上理解所得的意思为HibernateTemplate.execute执行中调用的session,现在可以根据这个session进行操作,该资料可以在Spring官方网站上查询www.springframework.org 另外还有一个Query接口,它有两个函数,setFirstResult(int firstResult)和setMaxResults(int maxResults),这两个函数看名取意,就不多说了,下面来个例子 接口 package com.david.dao; import org.hibernate.type.Type; import org.springframework.orm.hibernate3.HibernateCallback; public interface IPageBeanSH extends HibernateCallback { public Type[] getArrTypes(); public void setArrTypes(Type[] arrTypes); public Object[] getArrValues(); public void setArrValues(Object[] arrValues); public String getHql(); public void setHql(String hql); public int getNum(); public void setNum(int num); public int getStart(); public void setStart(int start); } 实现类 package com.david.dao; import java.sql.SQLException; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.type.Type; import org.springframework.orm.hibernate3.HibernateCallback; /** * 负责分页的bean * * @author Administrator * */ public class PageBeanSH implements IPageBeanSH { //起始位置 private int start=0; //数量 private int num; //查询语句 private String hql; //对象数组,查询 private Object[] arrValues; //对象 private Type[] arrTypes; public PageBeanSH() { super(); // TODO Auto-generated constructor stub } public PageBeanSH(String hql,Object[] arrValues) { this.hql = hql; this.arrValues=arrValues; // TODO Auto-generated constructor stub } /** * 构造函数 * @param start * @param num * @param hql */ public PageBeanSH(int start, int num, String hql,Object[] arrValues,Type[] arrTypes) { super(); this.start = start; this.num = num; this.hql = hql; this.arrValues=arrValues; this.arrTypes=arrTypes; } /** * 得出查询结果 */ public Object doInHibernate(Session session) throws HibernateException, SQLException { // TODO Auto-generated method stub Query query=session.createQuery(hql); query.setFirstResult(start*num); query.setMaxResults(num); //循环套入参数 if(arrValues.length==0){ ; }else{ for(int i=0;i getCategories(int start, Userinfo userinfo) { // TODO Auto-generated method stub String hql="from Category as category where category.userinfo=?";// as c where c.userinfo=?"; pageBeanSH.setHql(hql); pageBeanSH.setStart(start); Userinfo[] arrValues={userinfo}; pageBeanSH.setArrValues(arrValues); try { return (List ) pageBeanSH.doInHibernate(this.getSession()); } catch (DataAccessResourceFailureException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } public boolean updateCategory(Category category) { // TODO Auto-generated method stub return false; } public void setPageBeanSH(IPageBeanSH pageBeanSH) { // TODO Auto-generated method stub this.pageBeanSH=pageBeanSH; } public int getCategoriesNum(Userinfo userinfo) { // TODO Auto-generated method stub return this.getHibernateTemplate().find("from Category as category where category.userinfo=?", userinfo).size(); } } 在函数public List getCategories(int start, Userinfo userinfo)通过设置起始位置,hsl语句,参数列表数组就可以进行分页的查询操作了
0
上一篇:没有了
下一篇:Seam必须要学的东西
下一篇:Seam必须要学的东西
最新评论共有 0 位网友发表了评论
查看所有评论
发表评论
- 热门焦点
-
热点关注
相关文章
精彩推荐

