Java实现简单的分页功能
作者:LandiYax 发布时间:2021-06-02 01:32:48
标签:java,分页
本文实例为大家分享了Java实现分页功能的具体代码,供大家参考,具体内容如下
不用根据改变SQL的形式去查询;
直接查询所有的数据,根据页码自动显示数据;
分页对象
public class PageUtils implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5247614532234782640L;
public final static String PAGE = "page";
public final static String PAGE_NO = "pageno";
public final static String PAGE_SIZE = "pagesize";
private long pageSize=10;//每页显示记录数
private long firstResult=0;//当页第一条记录号
private long totalCount;//总记录数
private long totalPage;//总页码
private long pageNo=1;//当前页码
private List<?> sumData;//此集合可用来保存 合计数据
private List<?> data;//查询结果
public long getPageSize() {
return pageSize;
}
public void setPageSize(long pageSize) {
this.pageSize = pageSize;
}
public long getFirstResult() {
if(pageNo>0){
firstResult=pageSize * (pageNo -1);
}else{
firstResult = 0;
}
return firstResult;
}
public long getNextPageResult(){
if(pageNo>0){
return pageSize*(pageNo-1);
}else{
return pageNo;
}
}
public void setFirstResult(long firstResult) {
this.firstResult = firstResult;
}
public long getTotalCount() {
return totalCount;
}
public void setTotalCount(long totalCount) {
this.totalCount = totalCount;
totalPage = this.totalCount/pageSize;
if (totalPage == 0 || totalCount % pageSize != 0) {
totalPage++;
}
}
public long getTotalPage() {
return totalPage;
}
public void setTotalPage(long totalPage) {
this.totalPage = totalPage;
}
public long getPageNo() {
return pageNo;
}
public void setPageNo(long pageNo) {
this.pageNo = pageNo;
}
public List<?> getData() {
return data;
}
public void setData(List<?> data) {
this.data = data;
}
/**
* 是否第一页
*/
public boolean isFirstPage() {
return pageNo <= 1;
}
/**
* 是否最后一页
*/
public boolean isLastPage() {
return pageNo >= getTotalPage();
}
/**
* 下一页页码
*/
public long getNextPage() {
if (isLastPage()) {
return pageNo;
} else {
return pageNo + 1;
}
}
/**
* 上一页页码
*/
public long getPrePage() {
if (isFirstPage()) {
return pageNo;
} else {
return pageNo - 1;
}
}
public PageUtils(){}
public PageUtils(long pageNo){
this.pageNo=pageNo;
}
public PageUtils(long pageNo,long pageSize){
this.pageNo=pageNo;
this.pageSize = pageSize;
}
public List<?> getSumData() {
return sumData;
}
public void setSumData(List<?> sumData) {
this.sumData = sumData;
}
}
查询的数据实体
在查询的实体里添加页码和每页显示条数参数;
private int pageSize; //每页显示的条数
private int pageNo; //当前页码
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
控制层Controller
@RequestMapping("/list")
public String list(Model model,ChannelValueInfoView input) {
// input:传入的参数为对象
PageUtils page=new PageUtils();
//如果传入的当前条数为0,则赋予值(首次查询不带参);
if(input.getPageSize()==0){
//当前页码第一页
input.setPageNo(1);
//每页显示条数,当前每页显示10条数据;
input.setPageSize(10);
}
page.setPageNo(input.getPageNo());
page.setPageSize(input.getPageSize());
//核心分页代码
PageHelper p=new PageHelper();
Page<ChannelValueInfoList> l=p.startPage(input.getPageNo(),input.getPageSize());
//紧跟着的第一个select查询将会被分页
channelValueService.getChannelValueInfoViewList(input);
model.addAttribute("input", input);
page.setData(l);
page.setTotalCount(l.getTotal());
model.addAttribute("page", page);
return "index";
}
页面处理
//循环穿过来的PAGE.data数据
<tr th:each="ts : ${page.data}">
<td th:text="${ts.channelValueName}"></td>
----------
<form id="content_form" action="/channelValue/list" method="post" >
<div>
总数:<span id="totalCount" th:text="${page.totalCount}">0</span>
</div>
<ul class="pagination">
<li class="disabled">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="onFirst()">首页</a>
</li>
<li class="disabled">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="onPre()"><</a>
</li>
<li class="active">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<span id="beginRow" th:text="${page.pageNo}">0</span>
</a>
</li>
<li class="disabled">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="onNext()">></a>
</li>
<li class="disabled">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="onLast()">尾页</a>
</li>
</ul>
</for m>
----------
<script>
function onFirst() {
onList(1);
}
function onPre() {
var beginRow = parseInt($('#beginRow').html());
if (beginRow - 1 > 0) {
onList(beginRow - 1);
}
}
function onNext() {
var beginRow = parseInt($('#beginRow').html());
var totalCount = parseInt($('#totalCount').html());
var pageSize = parseInt($('#pageSize').val());
if (parseInt(totalCount / pageSize + 1) > beginRow + 1) {
onList(beginRow+1);
}
}
function onLast() {
var totalCount = parseInt($('#totalCount').html());
var pageSize = parseInt($('#pageSize').val());
onList(parseInt(totalCount / pageSize + 1) - 1);
}
function onList(pageNo) {
if (pageNo == 0)
pageNo = 1;
$('#pageNo').val(pageNo);
$("#content_form").submit();
}
</script>


猜你喜欢
- 本文实例形式展示了DevExpress实现GridControl根据列选中一行的方法,比较实用的功能,希望能对大家进行项目开发起到一定的借鉴
- 取模运算与取余运算两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。对于整形数a,b来说,取模运算或者求余运
- Long end,long num,File file,String charset4个参数说明end 相当于坐标 ,tail 向上的起点,
- 在看KMP算法时,想要简单的统计一下执行时间和性能。得出的结论是: Java的String的indexOf方法性能最好,其次是KMP算法,其
- 本文实例为大家分享了android拖拽框,裁剪出图片的具体代码,供大家参考,具体内容如下import android.graphics.Bi
- 介绍今天要分享得是Spring的@DependsOn注解,对于@DependsOn,我们从它的名称里面就能看出意思是“依
- 本文实例为大家分享了Android自定义View画圆的具体代码,供大家参考,具体内容如下引入布局<?xml version="
- pom.xml文件中添加如下配置项创建maven项目后,在pom.xml文件中添加如下配置项:<properties> &nbs
- ViewPager是android-support-v4.jar包里的组件。在布局文件里标签需要连包名一起写全称<android.su
- 1.什么是串口?在不会使用串口通讯之前,暂且可以把它理解为“一个可通讯的口”;使用篇不深入探讨理论及
- 本文实例为大家分享了Unity实现Flappy Bird游戏的具体代码,供大家参考,具体内容如下参考:腾讯课程(零基础制作像素鸟) 环境:U
- 示例代码:class BoxIntInteger {public static void main(String[] args) {Inte
- public class PullToLoadListView extends ListView implements OnScrollLi
- 时间轴主要使用Recyclerview来实现。开发语言使用Kotlin,代码相对java少了许多也简洁许多源代码下载地址效果图:MainAc
- 本文实例讲述了spring mvc 实现获取后端传递的值。分享给大家供大家参考,具体如下:jsp页面怎么获取从后端传递过来的值?JSTL 方
- 需要的jar包:数据库代码:create database school character set utf8;use school;CRE
- 介绍线段树(又名区间树)也是一种二叉树,每个节点的值等于左右孩子节点值的和,线段树示例图如下以求和为例,根节点表示区间0-5的和,左孩子表示
- 在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。使用流程【1】准备工作:在项目的工具包下导入HttpClient
- 目录背景原因分析setLoadWithOverviewMode端内其他地方排查总结WebView 字体常见的其他坑手机设置字体大小导致h5页
- 今天在研究dubbo时,发现一个新的知识点,可以使用javassist包进行动态编程,hibernate也使用该包进行编程。晚上百度了很多资