RSS
热门关键字:  jsp信息管理  jsp  学生管理  孙鑫  西門掃雪
当前位置 :| 首页>新手入门>基础知识>

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语句,参数列表数组就可以进行分页的查询操作了
上一篇:没有了
下一篇:Seam必须要学的东西
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
热门焦点
精彩推荐