分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
【博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708】
https://www.cnblogs.com/m-yb/p/9986309.html
分页功能的实现可以使用各种插件, 笔者今日闲来无事, 写了 分页工具类 前后台代码 Java JavaScript 的 实现及思路梳理.
供大家参考.
分页功能的需求一般有: 当前页/每页条数/总页数/总记录数/起始记录数/数据 等.
此工具类还可实现浏览器端修改每页条数的需求.
话不多说, 上代码:
先来后端的Java代码分页工具类
package com.github.mayangbo666.util;
import java.util.List;
public class PageHolder<T> {
private int curPage;// 当前页
private int pageNum;// 每页条数
private int totalCount;// 总记录数
private int totalPage;// 总页数
private int offset;// 起始记录数
private List<T> data;// 数据
public PageHolder(int curPage, int pageNum, int totalCount) {
this.curPage = curPage;
this.pageNum = pageNum;
this.totalCount = totalCount;
init();
}
private void init() {
processTotalPage();
processOffset();
}
private void processTotalPage() {
this.totalPage = (totalCount % pageNum) == 0 ? totalCount / pageNum : totalCount / pageNum + 1;
}
private void processOffset() {
this.offset = (curPage - 1) * pageNum;
}
public int getCurPage() {
return curPage;
}
public int getPageNum() {
return pageNum;
}
public int getTotalCount() {
return totalCount;
}
public int getTotalPage() {
return totalPage;
}
public int getOffset() {
return offset;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
}
Java代码使用解释如下:
使用时, 先从数据库统计出带条件的不分页的总记录条数totalCount;
然后创建要返回的 PageHolder(int curPage, int pageNum, int totalCount)对象;
通过该对象获得 offset;
再用offset, pageNum 分页查出条件的List记录;
视情况封装如PageHolder;
再来看看 JavaScript代码:
<script type="application/javascript" id="my">
// author mayangbo666
// 作者 mayangbo666 var curPage = 1
var pageNum = 1 // 每页条数
var totalPage = 1 // 首页
function first() {
curPage = 1
listFlow(curPage)
} // 尾页
function last() {
curPage = totalPage
listFlow(curPage)
} // 上一页
function pre() {
if (1 >= curPage){
return false
}
curPage -= 1
listFlow(curPage)
} // 下一页
function next() {
if (curPage >= totalPage) {
return false
}
curPage += 1
listFlow(curPage)
} // 当前页 / 总页数
function curPageAndTotalPage(a, b) {
$('#curPage_totalPage').html(a + '/' + b)
} function getPageNum(pageNumN) {
pageNum = pageNumN
listFlow(curPage)
} function listFlow(curPage) {
$.ajax({
type: 'post',
dataType: 'json',
url: '/listFlow',
data: {
cardNum: $("#cardDiv").val(),
password: $("#pwd").val(),
curPage: curPage,
pageNum: pageNum
},
success: function (dataResult) {
if (!dataResult.success){
alert(dataResult.message)
return false
} var flows = dataResult.data.data totalPage = dataResult.data.totalPage
curPageAndTotalPage(curPage, totalPage) var msg = '该卡还没有交易数据' for (var i=0; i< flows.length; i++){
var flow = flows[i]
msg += '<tr class="gradeX">'
msg += '<td>'+ flow.cardNum +'</td>'
msg += '<td>'+ flow.tradeAmount +'</td>'
msg += '<td>'+ flow.tradeType +'</td>'
msg += '<td>'+ flow.createTime +'</td>'
msg += '</tr>'
}
$("#flowListDiv").html(msg)
}
})
}
</script>
JavaScript代码这里稍微解释一下:
listFlow函数传入curPage;
发送ajax请求,后端返回AjaxVO对象(ps: 可找笔者的关于ajax前后端代码的文章);
取出各记录;
取出java分页工具类返回的总页数等信息, 通过函数curPageAndTotalPage(curPage, totalPage)写入页面;
for循环解析各记录的各字段, 写入页面;
然后有每页条数的下拉框<select><option>当下拉框的值变化时, 触发curPageAndTotalPage函数, 将新的值刷入页面;
首页/尾页/上一页/下一页 则:
根据条件对当前页赋值, 重新调用listFlow函数传入curPage, 发送ajax请求去后天查一遍即可.
分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解的更多相关文章
- PageUtil.java分页工具类
package com.chabansheng.util; /** * 分页工具类 * @author Administrator * */ public class PageUtil { /** * ...
- JAVA分页工具类
最近写了一个代码生成工具,分享下该工具下的分页工具 一.分页工具类 package com.qy.code.api.page; import java.io.Serializable; import ...
- Redis操作Set工具类封装,Java Redis Set命令封装
Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
- PHP常用之封装分页工具类
分页基本上是每个项目都会使用到的,所以呢,把它封装成一个工具类,以后直接调用就可以了(虽然TP框架的灰常强大,但是自己封一个也未尝不可.),这样既省时又省力还赚'工分'. 我封的这个分页工具类还比较完 ...
- c#分页工具类,完美实现List分页
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Proje ...
- SpringBoot集成Mybatis-PageHelper分页工具类,实现3步完成分页
在Mybatis中,如果想实现分页是比较麻烦的,首先需要先查询出总的条数,然后再修改mapper.xml,为sql添加limit指令. 幸运的是现在已经不需要这么麻烦了,刘大牛实现了一个超牛的分页工具 ...
- 工具类 分页工具类PageParamBean
自己编写的分页工具类,根据不同的数据库类型,生成对应的分页sql信息,分享给大家,希望大家共勉,工具类有些地方,大家可能不需要,请根绝自己的需要进行修改使用,核心逻辑都在,如果大家觉得有什么不妥,欢迎 ...
- JAVA 分页工具类及其使用
Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...
随机推荐
- ip xfrm命令是做什么的?
答: 设置xfrm.xfrm(transform configuration)是一个IP框架,用来转换数据包的格式,也就是使用算法来加密数据包,该框架用作IPsec协议的一部分 ip xfrm sta ...
- shell编程(五)之函数
function:函数 函数只有被调用才会执行如何调用:给定函数名 函数名出现的地方,会被自动替换为函数代码 函数的生命周期:被调用时创建,返回时终止return命令返回自定义状态结果 0:成功 1- ...
- THUSCH 2017 大魔法师(矩阵乘法+线段树)
题意 https://loj.ac/problem/2980 思路 区间修改考虑用线段树维护.由于一段区间的 \(A,B,C\) 可以表示成由原来的 \(A,B,C\) 乘上带上系数再加上某一个某个常 ...
- 优雅的使用windows
1. 快捷键 win+数字键:打开任务栏对应位置的程序 eg:快捷打开程序,重复该组合键有两个效果,如果只打开了一个窗口,再次按下组合键即可最小化,如果打开了多个窗口,则可以在同一程序的多个窗口中切换 ...
- JXOJ(基于UOJ)部署日志
JXOJ部署日志 前些日子协助cyc.llf两位奆老部署了JXOJ,为方便日后维护我校OJ的同学,写篇日志做记录以日后查看. 一.准备: 在尝试了多个不同OJ之后,我们最终选择了Universal ...
- C语言学习——bsmap-2.74_main.cpp
素材路径:https://www.codeforge.cn/read/428275/bsmap-2.74-_-main.cpp__html 1.C/C++预处理指令,常见的预处理指令如下: #空指令, ...
- 【python 3】 函数 初识
函数初识 1.函数的定义.调用.返回值 函数的定义.调用.返回值 def demo(): ## 定义函数 (def + 空格 + 函数名 + () + 冒号) ## 如下为函数体 return a # ...
- 使用TLS证书保护Docker
使用TLS证书保护Docker 当我们使用远程调用docker时,未设置TLS的docker,将可以被任何人调用,这是极其危险的. 在阿里云上跑的docker,这次就被不怀好意的人扫描到了默认端口,2 ...
- composer学习总结
composer 简介:是php用来管理依赖(dependency)关系的工具,工具包地址:https://packagist.org 下载地址:https://getcomposer.org/ 安 ...
- Foxmail设置IMAP和STMP服务器