Java分页的三种方法
来源:互联网 发布:ubuntu引导没有win10 编辑:程序博客网 时间:2024/06/05 20:39
前段时间在博客学习了web分页方法,所以在此写一篇学习笔记进行记录总结。
1.Java代码分页
我学习第一种方法的博客:
http://blog.csdn.net/sdtvyyb_007/article/details/49933171?locationNum=2
1.1首先,需要一个分页的工具类。
package com.entity;public class PageUtil { private int pageSize;// 每页显示的条数 private int total;// 总共的条数 private int currentPage;// 当前页面 private int totalPage;//总页数 public PageUtil(int pageSize, int total, int currentPage) { this.pageSize = pageSize; this.total = total; totalPage = getPageCount(); setCurrentPage(currentPage); } // 构造方法 public PageUtil(int pageSize, int total) { this(pageSize, total, 1); totalPage = getPageCount(); } // 总页数 public int getPageCount() { int size = total / pageSize;// 总条数/每页显示的条数=总页数 int mod = total % pageSize;// 最后一页的条数 if (mod != 0) size++; return size; } // 起始下标 public int getFromIndex() { // System.out.println("from index:"+(currentPage-1) * pageSize); return (currentPage - 1) * pageSize; } // 结束下标 public int getToIndex() { // System.out.println("to index:"+Math.min(recordCount, currentPage * // pageSize)); return Math.min(total, currentPage * pageSize); } // 得到当前页 public int getCurrentPage() { return currentPage; } // 设置当前页 public void setCurrentPage(int currentPage) { int validPage = currentPage <= 0 ? 1 : currentPage; validPage = validPage > getPageCount() ? getPageCount() : validPage; this.currentPage = validPage; } // 得到每页显示的条数 public int getPageSize() { return pageSize; } // 设置每页显示的条数 public void setPageSize(int pageSize) { this.pageSize = pageSize; } // 得到总共的条数 public int getTotal() { return total; } // 设置总共的条数 public void setTotal(int total) { this.total = total; } // 设置总页数 public int getTotalPage() { return totalPage; } // 得到总页数 public void setTotalPage(int totalPage) { this.totalPage = totalPage; }}
通过该类,就可以分页的信息了。
1.2获取需要显示的列表,并进行分页。
String pageString=request.getParameter("page"); String cidString=request.getParameter("cid"); int cid=Integer.parseInt(cidString); int currentPage=1;//当前页设置为1 if(pageString!=null) { currentPage=Integer.parseInt(pageString); } //获取漫画信息 Cartoon cartoon=cartoonService.selectCartoonById(cid); //在设置分页,每页显示10条,总条数,当前页 PageUtil pUtil = new PageUtil(10, cartoonService.countCartoonItemById(cid), currentPage); //获取Item列表 List<CartoonItem> list=cartoonService.selectCartoonItemById(cid); //列表截断 List<CartoonItem> pageList=list.subList(pUtil.getFromIndex(), pUtil.getToIndex()); request.setAttribute("cartoon", cartoon); request.setAttribute("pUtil", pUtil); request.setAttribute("pageList", pageList);
通过Java代码进行分页,需要把所有信息获取出来(select * from table),然后通过subList(pUtil.getFromIndex(), pUtil.getToIndex())方法,截取当前页的信息。
1.3显示分页信息
<body> <%PageUtil pUtil=(PageUtil)request.getAttribute("pUtil"); %> <% int lastPage=pUtil.getCurrentPage()-1; %> <% int nextPage=pUtil.getCurrentPage()+1; %> 记录总数${pUtil.total }条 当前页/总页数${pUtil.currentPage } /${pUtil.totalPage }每页显示${pUtil.pageSize }条 <% List<CartoonItem> pageList=(List)request.getAttribute("pageList"); %><table ><tr><th>章节</th><th>标题</th></tr><%for(CartoonItem ci:pageList){request.setAttribute("ci",ci);%> <tr><td>第${ci.getCha_num() }话</td> <td><a href="${ci.getUrl() }" target="_blank">${ci.getCha_name() }</a></td></tr> <%} %></table><a href="cartoon/getCartoon?cid=${cartoon.cid }&&page=1">首页</a> <a href="cartoon/getCartoon?cid=${cartoon.cid }&&page=<%=lastPage %>">上页</a> <a href="cartoon/getCartoon?cid=${cartoon.cid }&&page=<%=nextPage %>">下页</a> <a href="cartoon/getCartoon?cid=${cartoon.cid }&&page=${pUtil.totalPage } ">末页</a> <br> <a href="">返回首页</a> </body>
这是一个测试用的jsp页面。
最后附上一张效果图。
2.MySQL语句分页
这是我MySQL数据库中的一个表:
通过一个带limit的查询语句可以限制查询条数。
limit 起始下标,显示条数
SELECT * FROM cartoon_website.cartoon limit 0,5;
这里起始下标和显示条数为0和5只是一个举例,在实际的程序中就需要通过PageUtil的对象来进行控制了。
3.ORACLE分页
我学习于:
http://blog.csdn.net/anxpp/article/details/51534006
该博客写的很详细,在这里我就简单的写一下。
ORACLE分页需要通过rownum进行分页控制。
select * from (select rownum,* from table) t1where t1.rownum between 起始下标 and 终止下标
最后说一下优缺点。
通过Java代码来进行分页,是最简单直接的方法。但是这种方法的缺点也是非常的明显的,那就是你需要把所有数据都查询出来,当数据量太大时结果可想而知,所以推荐使用2和3的方法进行分页,也就是直接通过SQL语句进行分页。
阅读全文
0 0
- Java分页的三种方法
- 三种分页方法
- SQL分页的三种方法
- Oracle分页查询的三种方法
- SQL分页的三种方法
- 分页查询的三种方法
- Oracle分页查询的三种方法
- Oracle分页查询的三种方法
- SQL分页的三种方法
- Mysql的三种分页方法
- Oracle数据库分页的三种方法
- Oracle数据库分页的三种方法
- 三种sql分页方法
- sql 三种分页方法
- 用SQL实现分页的三种方法
- 用SQL实现分页的三种方法
- C# winform程序实现分页的三种方法
- 用SQL实现分页的三种方法
- [caffe笔记009]:编译caffe官方github的windows版
- Microsoft Office 365 Second Edition.pdf 英文原版 免费下载
- 关于struts2使用命名空间后action路径问题
- 人脸识别 ArcFace 的那些坑
- MySQL事务隔离级别详解
- Java分页的三种方法
- 中国金融科技50强之“冰鉴科技”基于大数据的小微企业征信
- linux学前需知
- recyclerview 显示图片 glide加载图片 实现点击跳转 上拉刷新下拉加载
- 使用notify-send发送桌面通知
- 图片上传预览
- 自启动服务方式一
- RecylerView 自定义 LayoutManager 基础一
- 素数的判定