文档详情

分页的实现步骤.doc

发布:2017-08-16约7.89千字共7页下载文档
文本预览下载声明
为什么需要分页? 从客户角度来讲,数据内容过多,查看数据非常不便。 从服务器和网络的角度来讲,查这么多数据,传输这么多数据,是一种效率很低的做法。 分页的核心SQL: mysql--limit Select * from article limit 4,10; --取第一页的数据:limit 0,10 --取第二页的数据:limit 10,10 --取第三页的数据:limit 20,10 --基本的过程: --1.用户点击页号发送请求:channel.jsp?num=2 --2.服务器收到请求后,根据num参数的值,计算记录的起始索引:(num-1)*size --3.调用dao中的方法,该方法发送sql:select * from tb_forum_article limit 10,10; --4.根据dao返回的结果集内容,该内容封装到List中 --5.将list中的内容展示到页面上 2. oracle --rownum select r,ename,sal from (select rownum r, ename,sal from (select * from emp order by sal desc) t2 ) where r=5 and r=10; 分页处理,查处5到10的记录 最简单最原始的分页: 分页的简单过程: 用户点击第一页传递一个参数:Num=1到后台,服务器获取num=1将该参数传到Dao中,dao中:select * from tb_article where id10 limit ?,?;, ps.setint((num-1)*10),返回一个List,传递到jsp中进行显示,发送给客户端。 在Dao中增加方法: public static List getArticles(int cid,int startRow,int size){ String sql = select tb_forum_article.id,uname username,createTime,count,title + from tb_forum_article + join tb_user on tb_forum_article.userId=tb_user.id + where tb_forum_article.cid=? and tb_forum_article.type!=2 + limit ?,?; //小频道下所有的帖子 String sql2 = select tb_forum_article.id,uname username,createTime,count,tb_forum_article.title + from tb_forum_article + join tb_user on tb_forum_article.userId=tb_user.id + join tb_forum_channel on tb_forum_article.cid=tb_forum_channel.id + + where tb_forum_channel.pid=? and tb_forum_article.type!=2 + limit ?,?; //大频道下所有的帖子 return MyHib.selectRows(DBUtil.getMysqlConn(), isMainChannel(cid)?sql2:sql, new Object[]{ cid,startRow,size }, ArticleInfo.class); } 在JSP中调用Dao中的分页方法: % int cid = Integer.parseInt(request.getParameter(cid)); int num = Integer.parseInt(request.getParameter(num)); int size=10; int startRow = (num-1)*size; request.setAttribute(alist,ArticleService.getArticles(cid,startRow,size)); % c:forEach var=i begin=1 end=10
显示全部
相似文档