首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

分页原理以及解决模式

2013-03-10 
分页原理以及解决方式最近又重温了一次分页的任务,不知觉间觉得自己忘记了不少东西。本次将分页的一些自己

分页原理以及解决方式

最近又重温了一次分页的任务,不知觉间觉得自己忘记了不少东西。本次将分页的一些自己的心得体会总结如下:

 

概述:

       分页总体原理为在每次点击页数的时候将点击的页数作为参数当前页传递到后台服务器端。服务器端经过nowpage和pagesize的一定算法将其他参数(例如pagecount,startrow,

endrow)等分页需要的属性计算出来。然后将startrow和endrow应用到查询的限制条数上。以查出来本页所需要的数据。在此同时更新了当前页等参数之后在服务器将page对象传递到前台更新分页情况展现即可


前台发送请求的2种写法:

1、 js提交form

Query q = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(hql);q.setFirstResult(startrow);//开始条数q.setMaxResults(pagesize);//查询出来几条List<WeiboPrivateBean> list = q.list();Oracle ROWNUM JDBC的写法:int pagesize = Pagination.PAGESIZE;int nowp = Integer.valueOf(nowpage);int startrow = (nowp-1)*pagesize;;//rownum分页开始int endrow = pagesize*nowp;//rownum分页结束int CountRec = 0;Map<String, Object> map = new HashMap<String,Object>();HibernateTemplate hibernateTemplate = this.getHibernateTemplate();Session session = hibernateTemplate.getSessionFactory().openSession();//AEBF8D1FD75781B718C4A6DE91175544StringBuffer SqlWithPage = new StringBuffer("select * from (select A.*,ROWNUM rn from (");String sql = "select distinct userid,touserid from weibo_private where userid = '"+userid+"' or touserid = '"+userid+"'";SqlWithPage.append(sql);SqlWithPage.append(") A)where rn <="+endrow+" and rn >"+startrow);Connection con = null;Statement stmt = null;ResultSet rs = null;Integer contacts = 0;try {con = session.connection();stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs = stmt.executeQuery(sql);rs.last();CountRec = rs.getRow();rs = stmt.executeQuery(SqlWithPage.toString());while(rs.next()){List<String> ids = new ArrayList<String>();String uid = "";String touserid = "";uid = rs.getString(1);touserid = rs.getString(2);ids.add(uid);ids.add(touserid);String key = UUID.randomUUID().toString();map.put(key, ids);}} catch (Exception e) {e.printStackTrace();}finally{if(null != rs){rs.close();}if(null != stmt){stmt.close();}if(null != con){con.close();}}Pagination page = new Pagination(Integer.valueOf(nowpage),CountRec);map.put("page", page);




热点排行