分页封装类

加油,新时代打工人!

package com.love.starter.common.util;

import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * 计算页开始及结束位置
 *
 * @author Administrator
 */
public class Page {
    public static final int PAGE_SIZE_TWENTY = 20;
    public static final int PAGE_SIZE_TEN = 10;
    public static final int PAGE_SIZE_TWELVE = 12;
    /**
     * 默认每页数量
     */
    private static final int DEFAULT_SIZE = 15;
    public static final int PAGE_SIZE_SEVEN = 7;
    public static final int PAGE_SIZE_FIFTY = 50;
    public static final int PAGE_SIZE_EIGHT = 8;
    public static final int PAGE_SIZE_FOURTEEN = 14;
    public static final int PAGE_SIZE_FIVE = 5;
    /**
     * 开始位置
     */
    private final int start;
    /**
     * 结束位置
     */
    private final int end;
    /**
     * 第几页
     */
    private int pageIndex = 1;
    /**
     * 每页记录数
     */
    private int pageSize = DEFAULT_SIZE;

    /**
     * 默认第一页,每页15行
     *
     * @param request
     */
    public Page(HttpServletRequest request) {
        String index = getPageIndex(request);
        String size = getPageSize(request);
        if (Nulls.isNotEmpty(index)) {
            pageIndex = Integer.parseInt(index);
        }
        if (Nulls.isNotEmpty(size)) {
            pageSize = Integer.parseInt(size);
        }
        start = (pageIndex - 1) * pageSize + 1;
        end = pageIndex * pageSize;
    }

    /**
     * @param request 请求
     * @param index   默认第几页
     * @param size    默认每页记录数量
     */
    public Page(HttpServletRequest request, int index, int size) {
        pageIndex = getPageIndex(request) == null ? index : Integer.parseInt(getPageIndex(request));
        pageSize = getPageSize(request) == null ? size : Integer.parseInt(getPageSize(request));
        start = (pageIndex - 1) * pageSize + 1;
        end = pageIndex * pageSize;
    }

    private static String getPageSize(HttpServletRequest request) {
        return request.getParameter("pageSize");
    }

    private static String getPageIndex(HttpServletRequest request) {
        return request.getParameter("pageIndex");
    }

    public void setQueryCondition(Map map) {
        map.put("START", start);
        map.put("END", end);
        map.put("start", start);
        map.put("end", end);
    }

    /**
     * 设置查询分页
     *
     * @param request
     * @param map
     */
    public static void setQueryByPage(HttpServletRequest request, Map map) {
        new Page(request).setQueryCondition(map);
    }

    /**
     * 在返回结果中增加页码
     *
     * @param mv
     */
    public void setReturnValue(ModelAndView mv) {
        mv.addObject("start", start);
    }

    /**
     * 设置查询尺寸
     *
     * @param map
     */
    public static void getSize(Map map) {
        int pageIndex = map.get("pageIndex") == null ? 1 : Integer.parseInt(map.get("pageIndex").toString());
        int pageSize = map.get("pageSize") == null ? DEFAULT_SIZE : Integer.parseInt(map.get("pageSize").toString());
        map.put("START", (pageIndex - 1) * pageSize);
        map.put("END", pageIndex * pageSize - 1);
    }

    public int getStart() {
        return this.start;
    }

    public int getEnd() {
        return this.end;
    }

    public int getPageIndex() {
        return this.pageIndex;
    }

    public int getPageSize() {
        return this.pageSize;
    }

    static class PageUtil {
        static void setPage(HttpServletRequest request, int pageSize, Map queryMap, ModelAndView mv) {
            Page page = new Page(request, 1, pageSize);
            page.setQueryCondition(queryMap);
            page.setReturnValue(mv);
        }
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/594631.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试题:String类型长度有限制吗?最大多少?

简介 Java中String是有长度限制的。String还有长度限制?是的有,而且在JVM编译中还有规范,String长度限制的场景(将某固定文件转码成Base64的形式用字符串存储,在运行时需要的时候在转回来,当时文件比较大),那这个规范限制到底是怎么样的,我们分析下。 …

扩展学习|结合故事的力量和数字的力量:混合方法研究和混合研究综述

文献来源:Pluye, Pierre, and Quan Nha Hong. "Combining the power of stories and the power of numbers: mixed methods research and mixed studies reviews." Annual review of public health 35 (2014): 29-45. 文献获取:链接&#xff1…

企业宣传新思路!制作三维动画,塑造品牌形象

三维动画又称之为3D动画,通过三维动画技术模拟真实物体的方式使其成为一个有用的工具。其精确性、真实性和可操作性,被广泛应用于影视、工业、电子、广告等诸多领域。 三维动画是在现代技术不断创新发展的基础上而产生的新型艺术表现形式,已…

深入解析C#特殊字符:概念、分类与使用方法

文章目录 前言一、特殊字符的定义二、特殊字符的分类与作用1.转义字符2. 格式字符3. 逻辑运算符4. 运算符5. 字符串6. 注释 三、$:字符串内插(String Interpolation)四、:逐字字符串(Verbatim Strings)五、…

爱奇艺文娱知识图谱的构建与应用实践

2012年5月,Google发布了知识图谱(Knowledge Graph),以提升搜索引擎返回的答案质量和用户查询的效率。有了知识图谱作为辅助,搜索引擎能够洞察用户查询背后的语义信息,返回更为精准、结构化的信息,更大可能地满足用户的…

界面组件Kendo UI for Angular教程 - 构建强大的PDF阅读器(一)

如今当用户需要处理PDF文件时,通常不得不下载应用程序或者浏览器插件,控制用户如何与PDF交互并不是一件容易的事。如果我们提供PDF作为内容,用户可以下载它并使用浏览器或PDF本身提供的控件进行交互。然而,一些企业可能希望控制用…

PN结击穿与电容效应分析

PN结是半导体器件中的一个基本结构,它由P型半导体和N型半导体紧密接触并相互结合在一起形成。P型半导体富含空穴(正电荷载体),是通过掺入受主杂质原子得到的;而N型半导体富含自由电子(负电荷载体&#xff0…

『春招实习』2023年3月春招实习求职经历

『春招实习』2023年3月春招实习求职经历 简介货拉拉一面杭州吉里一面传墨科技一面 简介 3月初我便开始陆续投递简历,直观的感受就是【投递的太晚了】,很多公司很早就开始招聘实习生了。 但是自己一直在担心没准备好,所以就想着再准备一天就投…

Covalent Network(CQT)为 Arbitrum 生态提供 250 万美元的资助,以促进 Web3 的创新与发展

Covalent Network(CQT)作为 Web3 领先的“数据可用性”层,宣布将提供 250 万美元的资金以支持 Arbitrum 生态项目,包括 Arbitrum One、Nova、Orbit 或 Stylus。此举旨在通过提供资源和帮助,推动利用 Arbitrum 网络上 C…

第二证券|股票w是什么意思?

字母W开头是指在科创板上市,发行人具有表决权差异组织的,即同股不同权的股票。上市后不再具有表决权差异组织的,该特别标识撤销。 科创板其他一些特别的字母标识: 1、发行人尚未盈余的,其股票或存托凭据的特别标识为…

windows10为什么微信可以上网浏览器无法上网?

windows10为什么微信可以上网浏览器无法上网? 问题描述解决办法 问题描述 打开电脑学习时,微信可以上网,浏览器无法上网,如何解决? 解决办法 1.控制面板->网络和Internet 2.Internet选项 3.Internet属性->连…

SQLI-labs-第十三关和第十四关

知识点:POST方式的单引号和括号闭合错误,报错注入 第十三关 思路: 1、判断注入点 使用Burpsuite抓包 首先加入一个单引号,爆出了数据库语句错误,说明存在注入点,根据提示,这里可能是’)闭合错…

【prometheus】Pushgateway安装和使用

目录 一、Pushgateway概述 1.1 Pushgateway简介 1.2 Pushgateway优点 1.3 pushgateway缺点 二、测试环境 三、安装测试 3.1 pushgateway安装 3.2 prometheus添加pushgateway 3.3 推送指定的数据格式到pushgateway 1.添加单条数据 2.添加复杂数据 3.SDk-prometheus-…

Linux网络部分——DHCP、FTP

目录 一、DHCP动态主机配置协议 1. DHCP工作原理(流程) 2. 使用DHCP的好处 3.DHCP的分配方式 4.DHCP安装和配置【☆】 二、FTP文件传输协议 1. FTP传输模式 2.FTP安装与配置【☆】 3. FTP设置白名单和黑名单【☆】 一、DHCP动态主机配置协议 DH…

安全数据交换系统哪个好?该如何选型?

安全数据交换系统是用于在不同网络或组织之间安全、高效地传输和共享数据的解决方案。安全数据交换系统对于任何需要处理敏感数据、确保数据安全、并满足合规要求的组织来说都是至关重要的。 这种系统通常用于以下目的: 1)数据传输:允许用户…

项目经理【人】原则

系列文章目录 【引论一】项目管理的意义 【引论二】项目管理的逻辑 【环境】概述 【环境】原则 【环境】任务 【环境】绩效 【人】概述 【人】原则 一、共创模式 1.1 共创模式 二、干系人的影响力强度和态度 2.1 干系人影响力 2.2 干系人态度 2.3 干系人管理 三、干系人权力…

自动驾驶融合定位系列教程五:惯性导航误差分析

自动驾驶融合定位系列教程五:惯性导航误差分析 一、概述 在定位领域的几乎所有多传感器融合系统中,都有IMU存在,而且,IMU是定位系统的主线与核心(对此可能很多人并不同意,但是我仍然坚定地坚持这一观点&a…

spring中的bean是线程安全的嘛

在Spring框架中,bean默认情况下不是线程安全的。Spring容器在初始化bean时,会为其创建一个单例实例,这个实例在整个应用中是唯一的,并且只会被初始化一次。由于这个特性,bean在默认情况下不是线程安全的。 然而&#…

亚马逊测评工作室如何轻松实现高收益,跨境电商揭秘汇率差赚钱术

随着跨境电商在国内市场的持续繁荣,众多电商卖家纷纷将目光投向了这一充满活力的领域。面对国内市场的激烈竞争,许多卖家选择向外拓展,寻求更广阔的发展空间。其中,亚马逊成为了众多卖家的不二选择,毕竟老外的市场还是…

吴恩达2022机器学习专项课程C2(高级学习算法)W1(神经网络):2.3 案例图像识别

目录 电脑如何表示一张图像1.像素2.像素亮度值3.展开像素亮度值 神经网络构建人脸识别1.需求2.整体过程3.隐藏层识别图像4.小结 神经网络构建识别汽车神经网络在计算机视觉应用中的工作原理 电脑如何表示一张图像 1.像素 像素是图像最小单位,用于表示图像中的点或…
最新文章