分页,是一种将所有数据分段展示给用户的技术.用户每次看到的不 是全部数据,而是其中的一部分,如果在其中没有找到自己想要的内容,用户可以通过指定页码或是点上/下一页的方式进行翻页。
本例演示静态分页,也就是先设置好每页显示10行,再根据总行数,来算出总页数,并且只显示10个页码。增加查询功能,并且查询后的页面也进行分页。页码也进行分页 !
查询功能的实现,需要我们在servlet向后台传输一个person,封装我们的查询条件
相关算法(技术):
总行数(num): select count(1) from stud;每页显示的行数(n): 固定值---已知的一个常量页数: pageSize= num/n +( (num%n==0)?0:1 )当前页号: currentPage当前要显示的页面数据的起始行号和终止行号startN: (currentPage-1)*pageSize如何显示从startN开始的pageSize条记录select * from stud limit startN, pageSize;增加了:开始的页码:showStart结束的页码:showEnd
像这样:
数据库数据:
创建的数据库表,还有需要准备的jar包,请看本篇博客:
blog.csdn.net/qq_26525215/article/details/52222472
源码:
PageJdbc.java
package cn.hncu.dao;import java.sql.SQLException;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apachemons.dbutils.QueryRunner;import org.apachemons.dbutils.handlers.MapListHandler;import org.apachemons.dbutils.handlers.ScalarHandler;import cn.hncu.domain.Person;import cn.hncu.pubs.C3p0Pool;public class PageJdbc implements IPageDAO { private final int pageSize = 10;// 每页显示的行数 @Override public Map query(Integer pageNo, Person person) throws NumberFormatException, SQLException { Map result = new HashMap(); // 获取总页数 pageCount = rows/pageSize + ( (rows%pageSize==0)?0:1 ) // 总行数rows String sql = "select count(1) from person where 1=1 ";// 用来查总行数 String sql2 = "select * from person where 1=1 ";// 用来查表内容 if (person.getId() != null && person.getId().trim().length() != 0) { sql = sql + "and id like '%" + person.getId() + "%'"; sql2 = sql2 + "and id like '%" + person.getId() + "%'"; } if (person.getName() != null && person.getName().trim().length() != 0) { sql = sql + "and name like '%" + person.getName() + "%'"; sql2 = sql2 + "and name like '%" + person.getName() + "%'"; } //System.out.println(sql2); QueryRunner run = new QueryRunner(C3p0Pool.getDataSource()); int rows = Integer.parseInt("" + run.query(sql, new ScalarHandler())); // 总页数 int pageCount = rows / pageSize + ((rows % pageSize == 0) ? 0 : 1); result.put("pageCount", pageCount);// 封装到result // 分页页面内容datas // 起始行号 int startN = (pageNo - 1) * pageSize; sql2 = sql2+ " limit "+startN+", "+pageSize; List