关于Spring+Hibernate+Ajax+jQuery中的分页显示处理

来源:互联网 发布:局域网控制上网软件 编辑:程序博客网 时间:2024/05/01 21:18

1 下面这个类中包含了分页显示的三种方法,由于Spring没有设定分页显示功能,需要自己拓展,看代码:
package demo.enhance;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class YeeKuHibernateDaoSupport extends HibernateDaoSupport {/** * 使用hql语句进行分页查询操作 * @param hql需要查询的hql语句 * @param offset 第一条记录的索引 * @param pageSize 每页需要显示的记录数 * @param 当前页的所有记录 */public List findByPage(final String hql,final int offset,final int pageSize){List list = getHibernateTemplate().executeFind(new HibernateCallback(){public Object doInHibernate(Session session){List result = session.createQuery(hql).setFirstResult(offset).setMaxResults(pageSize).list();return result;}});return list;}/** * 使用hql语句进行分页查询操作 * @param hql需要查询的hql语句 * @param value如果hql有一个参数传入,则value就是传入的参数 * @param offset第一条记录的索引 * @param pageSize每页需要显示的记录数 * @return 当前页的所有记录 */public List findByPage(final String hql,final Object value,final int offset,final int pageSize){List list = getHibernateTemplate().executeFind(new HibernateCallback(){public Object doInHibernate(Session session){List result = session.createQuery(hql).setParameter(0, value).setFirstResult(offset).setMaxResults(pageSize).list();return result;}});return list;}/** * 使用hql语句进行分页查询操作 * @param hql需要查询的hql语句 * @param value如果hql有多个参数需要传入,则value就是传入的参数数组 * @param offset第一条记录的索引 * @param pageSize每页需要显示的记录数 * @return 当前页的所有记录 */public List findByPage(final String hql,final Object[] values,final int offset,final int pageSize){List list = getHibernateTemplate().executeFind(new HibernateCallback(){public Object doInHibernate(Session session){Query query = session.createQuery(hql);for(int i = 0;i < values.length;i++){query.setParameter(i, values[i]);}List result = query.setFirstResult(offset).setMaxResults(pageSize).list();return result;}});return list;}//}2 在Servlet中如何运用:
package demo.web;import javax.servlet.*;import javax.servlet.http.*;import org.apache.commons.fileupload.*;import org.apache.commons.fileupload.disk.*;import org.apache.commons.fileupload.servlet.*;import java.util.*;import java.io.*;import demo.service.AlbumService;import demo.exception.AlbumException;import demo.web.base.BaseServlet;import demo.vo.*;/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>  * <br/>Copyright (C), 2001-2010, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author  Yeeku.H.Lee kongyeeku@163.com * @version  1.0 */public class TurnPageServlet extends BaseServlet{public void service(HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException{request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");String turn = request.getParameter("turn");HttpSession session = request.getSession(true);String name = (String)session.getAttribute("curUser");Object pageObj = session.getAttribute("curPage");//如果HttpSession中的curPage为null,则设置当前页为第一页int curPage = pageObj == null ? 1 :(Integer) pageObj;response.setContentType("text/javascript;charset=GBK");PrintWriter out = response.getWriter();if (curPage == 1 && turn.equals("-1")){out.println("alert('现在已经是第一页,无法向前翻页!')");}else{//执行翻页,修改curPage的值。curPage += Integer.parseInt(turn);try{List<PhotoHolder> photos = as.getPhotoByUser(name , curPage);//翻页后没有记录if (photos.size() == 0){out.println("alert('翻页后找不到任何相片记录,系统将自动返回上一页')");//重新返回上一页curPage -= Integer.parseInt(turn);}else{//把用户正在浏览的页码放入HttpSession中session.setAttribute("curPage" , curPage);}}catch (AlbumException ex){out.println("alert('" + ex.getMessage() + "请重试!')");}}}}

3 通过js调用
//处理翻页的函数function turnPage(flag){$.getScript("turnPage?turn=" + flag);}


原创粉丝点击