首先先看效果图:
然后提供了一个Java Bean实体类对象
(PageBean.java)
import java.util.List;
/**
* 封装了 分页查询的所有参数
*
*/
public class PageBean {
private Integer cp; // 当前页
private Integer tp; // 总页数
private Integer tr; // 总记录数
private Integer pr; // 每页记录数为5
private List list; // 每页数据
public Integer getCp() {
return cp;
}
public void setCp(Integer cp) {
this.cp = cp;
}
// 得到总页数
public Integer getTp() {
int count = tr / pr;
return (tr % pr == 0) ? count : count + 1;
}
public Integer getTr() {
return tr;
}
public void setTr(Integer tr) {
this.tr = tr;
}
public Integer getPr() {
return pr;
}
public void setPr(Integer pr) {
this.pr = pr;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
}
在dao层提供对数据库的操作:()
/**
* 查询所有用户
*
* @return 返回封装了所有客户的list集合
* @throws Exception
*/
public PageBean findAllCustomer(PageBean pageBean) throws Exception {
String sql = "select * from customer limit ?, ?";
Object[] objs = {(pageBean.getCp() - 1) * pageBean.getPr(),
pageBean.getPr()}; // 第一个参数为 5 * (当前页数 - 1); 后一个参数为5(每页的记录数)
List list = qr.query(sql, new BeanListHandler(Customer.class), objs);
pageBean.setList(list);
// 查询总记录数
sql = "select count(*) from customer";
Number n = (Number) qr.query(sql, new ScalarHandler());
Integer tr = n.intValue();
pageBean.setTr(tr);
return pageBean;
}
然后是页面的展示:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
客户列表
客户列表
客户姓名
性别
生日
手机
邮箱
描述
操作
${customer.cname }
${customer.gender }
${customer.birthday }
${customer.cellPhone }
${customer.email }
${customer.description }
编辑
删除
第${pageBean.cp }页/共${pageBean.tp }页
首页
<%--如果当前页为1 那么 不能够再上一页 --%>
上一页
上一页
<%-- 如果总页数小于10 那么第一个数字为1, 最后一个数字为总页数 --%>
<%--
如果总页数大于10, 那么第一个数字为cp-5, 最后一个数字为cp+4
--%>
${i}
${i}
<%-- 如果当前页等于总页数, 那么不能再下一页 --%>
下一页
下一页
尾页
结果演示:
完整代码地址(含SQL脚本)
https://github.com/menglanyingfei/Java/tree/master/JavaWebTrain/day_1_15/customer