分页是每个项目都会用到的,所以它的重要性不言而喻,这里整理一套封装好的分页工具,在项目中直接使用就好。
一、分页分析

首先应该了解分页查询语句(MySQL为例):
select * from table_test
LIMIT  -- 分页查询关键字
0,     -- 从第几条数据开始查询数据【(当前页数-1)* 每页显示的条数】
10;    -- 每页显示的条数
页面显示的分页工具的形式:
**当前页 1/10 首页 上一页  每页显示 10  下一页 末页**

看到前面的信息可以总结出需要往后台传递的数据是:当前页,每页显示条数

二、封装工具类

这里的工具类其实首先是一个分页的bean,因为我们要传递的数据不是一个,所以用一个PageBean封装分页属性:
public class PageBean<T>{private int currentPage = 1; //当前页,默认是第一页private int pageCount = 10;  //每页显示的条数,默认是10条private int totalPage;       //总页数private int totalCount;      //数据总条数private List<T> pageData;    //查询到的数据对象集合//省略getter、setter方法……//主要说一下总页数的getter方法public int getTotalPage(){//计算公式:总记录数%每页显示条数=0时if(totalCount % pageCount == 0){totalPage = totalCount / pageCount;}else{//计算公式:总记录数%每页显示条数!=0时totalPage = totalCount / pageCount + 1;}return totalPage;}
}

三、使用分页工具

封装好PageBean之后就可以在项目中直接使用了,在Dao层封装分页查询的方法,传入PageBean就可以了
public void getAll(PageBean<T> pb){//为PageBean对象的属性赋值//1、查询总记录数,放入totalCountint totalCount = this.getTotalCount();pb.setTotalCount(totalCount);//2、处理当当前页是第一页和最后一页时的问题if(pb.getCurrentPage() <= 0){//如果当前页不大于0,显示第一页pb.setCurrentPage(1);}else if(pb.getCurrentPage() > pb.getTotalPage()){//如果当前页大于最大页数,显示最后一页pb.setCurrentPage(pb.getTotalPage());}//获取当前页,查询数据int currentPage = pb.getCurrentPage();//查询的起始行int index = (currentPage - 1) * pb.getPageCount();//每页显示的条数int count = pb.getPageCount();//查询的sql语句String sql = "select * from table_test LIMIT ?,?";try{//使用dbutil组件//创建QueryRunner对象QueryRunner qr = new QueryRunner();//查询当前页数据//QueryRunner对象的query方法参数说明://第一个:查询的sql//第二个:查询的返回结果,直接使用接口中声明好的BeanListHandler就行,注意是泛型,具体到业务的时候指定具体的泛型类型//第三个:这个参数是一个可变参数,就是传入sql语句中占位符的实参List<T> pageData = qr.query(sql, new BeanListHandler<T>(T.class),index,count);pb.setPageData(pageData);}catch(Exception e){throw new RuntimeException();}
}//查询总记录数的方法
public int getTotalCount(){String sql = "select count(*) from table_test";try{//这里使用DbUtils组件,如果有不清楚的可以+QQ:3393055745//创建QueryRunner对象QueryRunner qr = new QueryRunner();//QueryRunner的query方法传入的两个参数://第一个:查询sql//第二个:使用接口封装好的对象就可以,这里使用的对象的意思是返回查询结果的第一条数据Long count = qr.query(sql,new ScalarHandler<Long>());return count.intValue();}catch(Exception e){throw new RuntimeException();}
}

查询方法封装好之后就是从前台页面传数据了,剩下的就是jsp和后台数据的交互了,就不介绍了。。。

java分页工具封装相关推荐

  1. java分页的工具类,java分页工具类

    PageBean-分页 package com.soyea.util; import java.io.Serializable; import java.util.List; /** * 分页工具类 ...

  2. java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

  3. java 分页_Spring Boot + MyBatis 如何借助PageHelper插件实现分页效果

    概述 上文中已经介绍了Spring和MyBatis的整合,在上文的基础上我们加入了PageHelper这个插件,来实现MyBatis列表查询的分页效果 PageHelper是啥 PageHelper是 ...

  4. Java Web的分页工具类

    最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: Pa ...

  5. Java利用反射封装DBUtil,mysql万能增删改查工具类,附源码

    Java利用反射封装DBUtil,mysql万能增删改查工具类,附源码 等有时间再慢慢写代码注释吧,先把源码放出来.文章最后有整个项目的压缩包. ps:拓展 Java 原生MySQL JDBC 插入后 ...

  6. java手动分页工具类

    开发中,碰到了一些奇葩的业务逻辑,无法使用框架自身的分页功能,想了很久最后还是决定自己手写一个分页工具类,以备后续参考和使用,下面直接上代码, /*** 手动分页类* @param datas* @p ...

  7. ssm整合oracle分页,java实现ssm分页工具类及其使用方法

    分享一下我现在所使用的分页工具类,不像网上的那么规范 纯属自己总结根据逻辑敲出来的,基于mysql的limit来做分页.有不对的地方还望大佬指出,直接上代码 PageTools package com ...

  8. java分页封装到dao层,Node Dao层的封装与分页

    传统的写法/** * Created by 黄森 on 2017/7/22. */var express = require('express');var app = express();var Mo ...

  9. 项目经验分享——Java常用工具类集合 转

    http://blog.csdn.net/xyw591238/article/details/51678525 写在前面 本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接 ...

最新文章

  1. STAR: ultrafast universal RNA-seq aligner STAR:超快的通用RNA-seq比对器
  2. 应用内存onLowMemory onTrimMemory优化
  3. 计算机网络总结之计算机概述
  4. Java 取得文件名的后缀
  5. 3个月转行数据分析师,你需要掌握这些内容
  6. IDC 2018可穿戴市场报告:耳戴式设备占比四分之一,成“新宠”
  7. 如何快速高效的群发Email
  8. pyinstaller 32位 64位的问题
  9. Astar算法基本概念及其实现
  10. ENVI裁剪影像重叠区域(非矩形)
  11. java做抽奖系统怎么搞_JAVA 随机抽奖系统 实现教程及代码
  12. python一款高颜值的词云包让我拍案叫绝
  13. Kaggle下载criteo数据集
  14. 磁珠和电感有什么区别_电感和磁珠的作用
  15. JAVA实习生/应届生面试笔试题(一)
  16. 数据决策系统功能整理
  17. DCloud使用小结
  18. (Android-RTC-1)Android-WebRTC初体验
  19. 张志华-统计机器学习-概论
  20. ESP32学习笔记十九之BLE协议GAPGATT

热门文章

  1. STM32——看门狗
  2. 【写笔记】WPF 自定义简单的TextBox控件
  3. 土壤水分传感器的内部构造
  4. 30岁零基础学计算机考博,读完博士都30岁了,还有出路吗?说这话的人,真不知道博士多稀缺...
  5. python中assert的用法
  6. 图灵完备——停机问题
  7. pdf文件预览、打印
  8. How to Test for Bad Memory (RAM) in Windows
  9. android自定义view(二)-仿华为卡包效果
  10. stm32f407关于独立看门狗各种函数(一)(HAL库)