java自定义分页模板

有些情况下使用分页插件并不合适,这时候需要我们自定义分页插件模板,下面是笔者自己写的分页模板可以根据需要自己更改:

/*
 * Copyright (C) 2018 Baidu, Inc. All Rights Reserved.
 */
package com.legal.domain;

import java.util.List;

/**
 * 分页
 *
 * @author
 * @since 2018/11/22 19:01
 */
public class PageHelper {
    // 总条数
    private Integer totalCount;
    // 总页数
    private Integer totalPages;
    // 每页条数
    private Integer limit;
    // 当前页码从1开始
    private Integer page;
    // 前一页
    private Integer prePage;
    // 是否首页
    private Boolean firstPage;
    // 是否末页
    private Boolean lastPage;
    // 下一页
    private Integer nextPage;
    // 偏移量
    private Integer offset;
    // 是否有下页
    private Boolean hasNextPage;
    // 是否有上页
    private Boolean hasPrePage;
    // 当前页从第几条开始查
    private Integer startRow;
    // 返回数据
    private List items;

    public PageHelper pagination(Integer totalCount, Integer limit, Integer page, List items) {
        PageHelper pageHelper = new PageHelper();
        pageHelper.setTotalCount(totalCount);
        Integer totalPage = totalCount % limit == 0 ? totalCount / limit : totalCount / limit + 1;
        pageHelper.setTotalPages(totalPage);
        pageHelper.setPage(page);
        pageHelper.setLimit(limit);
        pageHelper.setOffset(limit);
        pageHelper.setStartRow(limit * (page - 1));
        if (page > 1 && page < totalPage) {
            firstPage = false;
            hasPrePage = true;
            nextPage = page + 1;
            prePage = page - 1;
        } else if (page == totalPage && page != 1) {
            lastPage = true;
            hasNextPage = false;
            firstPage = false;
            hasPrePage = true;
            prePage = page - 1;
        } else if (page == 1 && page != totalPage) {
            lastPage = false;
            hasNextPage = true;
            firstPage = true;
            hasPrePage = false;
            nextPage = page + 1;
        } else if (page == totalPage && totalPage == 1) {
            lastPage = true;
            hasNextPage = false;
            firstPage = true;
            hasPrePage = false;
        }
        pageHelper.setLastPage(lastPage);
        pageHelper.setFirstPage(firstPage);
        pageHelper.setHasNextPage(hasNextPage);
        pageHelper.setHasPrePage(hasPrePage);
        pageHelper.setPrePage(prePage);
        pageHelper.setNextPage(nextPage);
        int toIndex = 0;
        if (pageHelper.getStartRow() + pageHelper.getLimit() >= pageHelper.getTotalCount()) {
            toIndex = pageHelper.getTotalCount();
        } else {
            toIndex = pageHelper.getStartRow() + pageHelper.getLimit();
        }
        if (pageHelper.getStartRow() > toIndex) {
            this.items = null;
        } else {
            this.items = items.subList(pageHelper.getStartRow(), toIndex);
        }
        pageHelper.setItems(this.items);
        return pageHelper;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public Integer getTotalPages() {
        return totalPages;
    }

    public void setTotalPages(Integer totalPages) {
        this.totalPages = totalPages;
    }

    public Integer getLimit() {
        return limit;
    }

    public void setLimit(Integer limit) {
        this.limit = limit;
    }

    public Integer getPage() {
        return page;
    }

    public void setPage(Integer page) {
        this.page = page;
    }

    public Integer getPrePage() {
        return prePage;
    }

    public void setPrePage(Integer prePage) {
        this.prePage = prePage;
    }

    public Boolean getFirstPage() {
        return firstPage;
    }

    public void setFirstPage(Boolean firstPage) {
        this.firstPage = firstPage;
    }

    public Boolean getLastPage() {
        return lastPage;
    }

    public void setLastPage(Boolean lastPage) {
        this.lastPage = lastPage;
    }

    public Integer getNextPage() {
        return nextPage;
    }

    public void setNextPage(Integer nextPage) {
        this.nextPage = nextPage;
    }

    public Integer getOffset() {
        return offset;
    }

    public void setOffset(Integer offset) {
        this.offset = offset;
    }

    public Boolean getHasNextPage() {
        return hasNextPage;
    }

    public void setHasNextPage(Boolean hasNextPage) {
        this.hasNextPage = hasNextPage;
    }

    public Boolean getHasPrePage() {
        return hasPrePage;
    }

    public void setHasPrePage(Boolean hasPrePage) {
        this.hasPrePage = hasPrePage;
    }

    public Integer getStartRow() {
        return startRow;
    }

    public void setStartRow(Integer startRow) {
        this.startRow = startRow;
    }

    public List getItems() {
        return items;
    }

    public void setItems(List items) {
        this.items = items;
    }
}

原文地址:https://www.cnblogs.com/itzfz/p/10007502.html

时间: 2024-11-10 14:50:40

java自定义分页模板的相关文章

自定义分页模板

当数据库中数据有很多,我们通常会在前端页面做分页展示. 分页的数据可以在前端页面实现,也可以在后端实现分页. 后端实现分页的原理就是每次只请求一页数据. 准备工作 我们使用脚本批量创建一些测试数据(将下面的代码保存到bulk_create.py文件中放到Django项目的根目录,直接执行即可.) import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", &

freemarker自定义分页(springboot、bootstrap4)

先看下最终效果: 源码地址:https://github.com/zhouyu629/freemarker-page-demo 实现过程 一.新建springboot项目,导入相关依赖包 <!--web组件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </d

android自定义UI模板图文详解

不知道大家在实际开发中有没有自定义过UI模板?今天花时间研究了一下android中自定义UI模板,与大家分享一下. 每个设计良好的App都是自定义标题栏,在自定义标题栏的过程中大部分人可能都是自定义一个标题的xml文件,然后在需要的地方直接通过include来引用,这比起在每个布局文件中写标题栏已经进化很多了,但仍然不是最简单有效的方法,我们为什么不能自定义一个标题控件呢?今天就带大家自己做一个标题栏控件.效果图如下: 开始啦: 第一步:自定义xml属性 新建一个android项目,在value

JSP自定义分页标签TAG

首先我们需要在WEB-INF/tld/目录下创建page.tld文件 <?xml version="1.0" encoding="ISO-8859-1"?> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>page</short-name> <u

MyEclipse自定义servlet模板

每次用MyEclipse默认的servlet的模板创建servlet的时候,里面会生成好多没有用的代码.因此,我们可以自定义servlet模板.步骤如下: 找到com.genuitec.eclipse.wizards_11.5.0.me201310291746.jar 文件,该文件在MyEclipse(本人安装的是MyEclipse Professional 2014)安装目录下的/plugins下 打开com.genuitec.eclipse.wizards_11.5.0.me20131029

PHPCMS V9二次开发自定义分页函数的解决方案

下面为大家分享一个PHPCMS V9二次开发自定义分页函数的方法. 方法如下: 首先打开 phpcms\libs\functions\global.func.php这个文件,找到分页函数,复制一下,粘贴到默认分页函数的下面,重新命名,比如我的就命名为wz_pages,保存. 打开 phpcms/libs/classes/template_cache.class.php,找到207行的: $str .= '$pages = pages($'.$op.'_total, $page, $pagesiz

extjs_09_自定义分页组件

1.项目截图 2.CustomSizePagingToolbar.js Ext.define("Ext.ux.CustomSizePagingToolbar", {// 定义的名字要和文件的名字大小写一样 extend : "Ext.toolbar.Paging", alias : "widget.custompaging",// 别名 beforSizeText : "每页", afterSizeText : "条

Django自定义分页、bottle

一.使用django实现之定义分页 1.自定义分页在django模板语言中,通过a标签实现; 2.前段a标签使用<a href="/user_list/?page=1">1</a>,将page的值传送到函数/user_list/中,后端在user_list中通过request.GET.get('page',1)获取当前页; 3.从数据库中获取特定行的数据,使用result = models.UserList.objects.all()[start:end]获取,

Python之路【第十九篇】自定义分页实现(模块化)

自定义分页 1.目的&环境准备 目的把分页写成一个模块的方式然后在需要分页的地方直接调用模块就行了. 环境准备Django中生成一个APP并且注册,配置URL&Views 配置URL from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^user_lis