前言

  这是我的首篇技术文章,文章内容其实是一年前做项目的时候写的。今天拿出来共享一下,这篇文章适合初学者学习借用,也希望各位大神提出宝贵意见。

一、分页技术简介

  分页技术主要分三种:客户端分页、数据库分页、服务器端分页。

  客户端分页:客户端分页说的直白一点就是在前台进行分页。这种分页的方式减少了与数据库的交互次数,但主要不足之处在于它要先把所有的数据从数据库中读出来,然后再拿到前台进行分页,当数据量很大的时候,这种缺点暴露的就更加明显。

  数据库分页:这种分页方式刚好跟客户端分页相反,它是根据前台对pageSize的要求,按照pageSize的大小来查询数据库。当数据量很大时这种分页方式比较适用,只在页面上有查询需求时,后台才去查询数据库。这种分页方式加大了与数据库的交互次数

  服务器端分页:这种分页方式结合了前面两种分页方式。先将数据一次性从数据库中读取出来放到缓冲区,在客户端进行分页。

二、数据库分页技术实现

  1、com.***.data

    做分页之前,先将与分页相关的属性和方法封装成一个JavaBean,在上层将这些以对象的形式呈现给客户端。具体的实现代码如下:    

 1 package zhu.common.data;
 2 
 3 import java.util.List;
 4 
 5 public class Pager {
 6     private int totalRows;//记录总数
 7     private int pageSize = 5;//设置一页显示的记录数
 8     private int currentPage;//当前页码
 9     private int totalPages;//总页数
10 private int startRow;//当前页码开始记录数
11 private List elements;//记录列表
12 public Pager() {
13 }
14 //构造pager对象
15 public Pager(int _totalRows, int pageSize) {
16 this.pageSize=pageSize;
17 totalRows = _totalRows;
18 totalPages=totalRows/pageSize;
19 int mod=totalRows%pageSize;
20 if(mod>0){
21     totalPages++;//最后一页不足一页则总页数加1
22 }
23 currentPage = 1;//初始设置当前页为第一页
24     startRow = 0;//初始读取设置为0
25 }
26 
27 //点击首页按钮,执行这个方法
28 public void first() {
29     currentPage = 1;
30     startRow = 0;
31 }
32 //点击上一页按钮,执行这个方法
33 public void previous() {
34     if (currentPage == 1) {
35         return;
36     }
37     currentPage--;
38     startRow = (currentPage - 1) * pageSize;
39 }
40 //点击下一页按钮,执行这个方法
41 public void next() {
42     if (currentPage < totalPages) {
43         currentPage++;
44     }
45     startRow = (currentPage - 1) * pageSize;
46 }
47 //点击尾页按钮,执行这个方法
48 public void last() {
49     currentPage = totalPages;
50     startRow = (currentPage - 1) * pageSize;
51 }
52     
53 //做页面跳转时,执行这个方法
54 public void refresh(int _currentPage) {
55     currentPage = _currentPage;
56     if (currentPage > totalPages) {
57         last();//_currentPage超过了总页数,则跳转到最后一页
58     }
59     if(currentPage<1){
60         first();//_currentPage不足1,则跳转到首页
61     }
62     startRow = (currentPage - 1) * pageSize;//重新设置起始读取位置
63 }
64 /*此处略去35行setters和getters,但是在使用这个类时要加上*/
65 }
JavaBean

相关文章:

  • 2022-12-23
  • 2021-06-08
  • 2021-11-20
  • 2021-09-29
  • 2022-02-12
  • 2022-12-23
  • 2021-11-29
猜你喜欢
  • 2021-05-20
  • 2021-07-17
  • 2021-08-25
  • 2021-12-17
  • 2022-12-23
  • 2021-06-28
  • 2021-09-22
相关资源
相似解决方案