java分页工具封装
分页是每个项目都会用到的,所以它的重要性不言而喻,这里整理一套封装好的分页工具,在项目中直接使用就好。
一、分页分析
首先应该了解分页查询语句(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分页工具封装相关推荐
- java分页的工具类,java分页工具类
PageBean-分页 package com.soyea.util; import java.io.Serializable; import java.util.List; /** * 分页工具类 ...
- java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...
- java 分页_Spring Boot + MyBatis 如何借助PageHelper插件实现分页效果
概述 上文中已经介绍了Spring和MyBatis的整合,在上文的基础上我们加入了PageHelper这个插件,来实现MyBatis列表查询的分页效果 PageHelper是啥 PageHelper是 ...
- Java Web的分页工具类
最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: Pa ...
- Java利用反射封装DBUtil,mysql万能增删改查工具类,附源码
Java利用反射封装DBUtil,mysql万能增删改查工具类,附源码 等有时间再慢慢写代码注释吧,先把源码放出来.文章最后有整个项目的压缩包. ps:拓展 Java 原生MySQL JDBC 插入后 ...
- java手动分页工具类
开发中,碰到了一些奇葩的业务逻辑,无法使用框架自身的分页功能,想了很久最后还是决定自己手写一个分页工具类,以备后续参考和使用,下面直接上代码, /*** 手动分页类* @param datas* @p ...
- ssm整合oracle分页,java实现ssm分页工具类及其使用方法
分享一下我现在所使用的分页工具类,不像网上的那么规范 纯属自己总结根据逻辑敲出来的,基于mysql的limit来做分页.有不对的地方还望大佬指出,直接上代码 PageTools package com ...
- java分页封装到dao层,Node Dao层的封装与分页
传统的写法/** * Created by 黄森 on 2017/7/22. */var express = require('express');var app = express();var Mo ...
- 项目经验分享——Java常用工具类集合 转
http://blog.csdn.net/xyw591238/article/details/51678525 写在前面 本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接 ...
最新文章
- STAR: ultrafast universal RNA-seq aligner STAR:超快的通用RNA-seq比对器
- 应用内存onLowMemory onTrimMemory优化
- 计算机网络总结之计算机概述
- Java 取得文件名的后缀
- 3个月转行数据分析师,你需要掌握这些内容
- IDC 2018可穿戴市场报告:耳戴式设备占比四分之一,成“新宠”
- 如何快速高效的群发Email
- pyinstaller 32位 64位的问题
- Astar算法基本概念及其实现
- ENVI裁剪影像重叠区域(非矩形)
- java做抽奖系统怎么搞_JAVA 随机抽奖系统 实现教程及代码
- python一款高颜值的词云包让我拍案叫绝
- Kaggle下载criteo数据集
- 磁珠和电感有什么区别_电感和磁珠的作用
- JAVA实习生/应届生面试笔试题(一)
- 数据决策系统功能整理
- DCloud使用小结
- (Android-RTC-1)Android-WebRTC初体验
- 张志华-统计机器学习-概论
- ESP32学习笔记十九之BLE协议GAPGATT