分页功能(Pagenation类)
分页功能的 封装 + 实现:
分页的SQL语句 + 分页工具类Pagenation的细节 + 分页原理
一、 分页的SQL语句:
select * from (selectt.*,row_number() over(order by ROWNUM ASC) rn from goods t) where rn>=? andrn<=?
Ø goods :为表名,数据从goods中查得
Ø 第一个? :起始行号
Ø 第二个? :终点行号
二、 分页工具类Pagenation的细节:
Pagenation类:类似JavaBean的工具类,封装了分页后的细节,
主要作用:封装后台分页细节,前台调用分页细节。
简介:实例化时需要传入3个参数,然后类内部计算得到所有分页细节
注意:后期还需要调用setList()方法将分页结果也存入其中。
用法:后台用此类封装分页结果,request给前台,前台展示。
传入参数:当前页数(pageNum)+每页大小(size)+记录总行数(rowCount)
三、 分页原理:
1. 后台sevlet根据参数调用分页service()方法,返回值一个Pagenation类的对象,封装了当前要求的分页信息;
2. service()方法处理过程:根据传入的三个参数,初始化Pagenation类,然后调用dao包下的分页查询类,返回值为一个List,将这个List也存入Pagenation对象中,返回返回该对象;
3. 返回的Pagenation对象包含了有关分页所有内容,将此对象放在request中传到前台,跳转到前台;
4. 在前台中取出Pagenation的相关信息,此时的Pagenation对象中存放着分页信息,用EL和JSTL显示分页信息。
四、 代码实现:
1. 分页工具类(核心中的核心类):
2. 其他代码:
(1)、前端展示代码:
package com.test.util;
import java.util.List;
/**
* Pagenation分页工具类:用于数据的分页
* 根据传入的pageNum参数来确定从哪页开始分页
* 根据传入的size参数确定每页分多少条记录
* 根据传入的rowCount参数来确定数据总条数
* @author Alvin Xing
*/
public class Pagenation {
/* 指定的参数 */
private int pageNum; //当前页号
private int size; //页