Java实现简单的分页功能
作者:LandiYax 时间:2021-06-02 01:32:48
本文实例为大家分享了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>
标签:java,分页
0
投稿
猜你喜欢
Spring Boot 在启动时进行配置文件加解密的方法详解
2023-11-12 17:13:54
Spring Boot右键maven build成功但是直接运行main方法出错的解决方案
2021-08-22 00:21:26
Java抛出异常与自定义异常类应用示例
2022-10-23 01:58:52
java删除文件和文件夹具体实现
2023-09-26 20:46:55
C#实现带消息数的App图标
2022-03-08 11:30:52
Java泛型变量如何添加约束
2021-06-02 23:12:06
Android优化提升应用启动速度及Splash页面的设计
2022-02-18 06:02:27
Flutter快速制作一个水印组件实例详解
2023-05-16 23:32:20
双重检查锁定模式Java中的陷阱案例
2023-11-13 22:11:02
Java 输入流中的read(byte[] b)方法详解
2022-08-13 18:58:12
Java concurrency线程池之线程池原理(二)_动力节点Java学院整理
2023-11-28 23:43:18
SpringMVC使用hibernate-validator进行参数校验最佳实践记录
2022-11-12 23:44:04
Spring Security中使用authorizeRequests遇到的问题小结
2023-10-07 04:23:45
Android上传文件到服务器的方法
2021-10-05 21:21:57
Android使用多线程进行网络聊天室通信
2022-05-11 18:56:36
Android代码检查规则Lint的自定义与应用详解
2021-11-04 22:13:43
Spring MVC数据绑定方式
2023-03-18 03:06:55
常用json与javabean互转的方法实现
2023-01-07 14:24:19
WPF利用WindowChrome实现自定义窗口
2021-06-08 07:33:55
C# log4net 日志输出的实现示例
2023-04-27 06:50:12