当前位置: 首页 > news >正文

SpringBoot 如何增强PageHelper入参的健壮性

PageHelper.startPage(int pageNum, int pageSize, boolean count) 参数为外部输入,故存在异常输入场景。比如 pageNumpageSize 输入的值 负数 或者 0,所以引入PageUtils来对入参进行判断矫正,从而避免引入异常。

第1步:支持配置的方式来修改默认值

page-helper:
  default-page-num: 1
  default-page-size: 10
  max-page-size: 50
  count-total-or-not: true

第2步:引入PageUtils

import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.Objects;

@Component
public class PageUtils {
    private static int defaultPageNumber; // 默认显示第几页
    private static int defaultPageSize; // 默认每页显示多少条数据
    private static int maxSizePage; // 每页显示条数上限
    private static boolean isQueryTotalCount; // 每次查询DB时,是否进行count查询

    @Value("${page-helper.default-page-num:1}")
    private int pageNumberFromConfig;
    @Value("${page-helper.default-page-size:10}")
    private int pageSizeFromConfig;
    @Value("${page-helper.max-page-size:15}")
    private int maxSizePerPageFromConfig;
    @Value("${page-helper.count-total-or-not:true}")
    private boolean isQueryTotalFromConfig;

    @PostConstruct
    private void init() {
        defaultPageNumber = pageNumberFromConfig;
        defaultPageSize = pageSizeFromConfig;
        maxSizePage = maxSizePerPageFromConfig;
        isQueryTotalCount = isQueryTotalFromConfig;
    }

    public static int getPageNum(Integer pageNum) {
        if (Objects.isNull(pageNum) || pageNum <= 0) {
            return defaultPageNumber;
        } else {
            return pageNum;
        }
    }

    public static int getPageSize(Integer pageSize) {
        if (Objects.isNull(pageSize) || pageSize <= 0) {
            return defaultPageSize;
        } else if (pageSize > 100) {
            return maxSizePage;
        } else {
            return pageSize;
        }
    }

    public static boolean isQueryTotalCount() {
        return isQueryTotalCount;
    }
}

第3步:使用

public List<Student> listStudents(Integer pageNum, Integer PageSize) {
    PageHelper.startPage(PageUtils.getPageNum(pageNum), PageUtils.getPageSize(PageSize), PageUtils.isQueryTotalCount());
    PageHelper.orderBy("age asc");

    List<Student> students = userMapper.listStudents();

    PageInfo<Student> studentPageInfo = PageInfo.of(students);
    return students;
}

在这里插入图片描述

参考

@PostConstruct 的执行时机

相关文章:

  • CCRC认证办理流程以及申报材料
  • 【2019】360Java工程师客观题总结
  • VCG 网格顶点聚类
  • statsmodels.tsa 笔记 detrend(去趋势)
  • 持续构建行业影响力|HarmonyOS SDK荣膺年度“技术卓越”奖项
  • C++STL
  • 通信电缆的UL认证安全标准UL 444详情介绍
  • SpringBoot 配置文件加载优先级
  • Linux网络配置
  • MySQL之CRUD、常见函数及union查询
  • 基于博弈树的开源五子棋AI教程[3 极大极小搜索]
  • Vulnhub-GoldenEye
  • Spring MVC自定义类型转换器!!!
  • DEJA_VU3D - Cesium功能集 之 113-获取圆节点(2)
  • mysql8.0 1055报错问题 [安装包]安装修改
  • 数据库开发与设计过程中的问题分析总结
  • 免费简单好用的 webshell 在线检测:支持 php、jsp、asp等多格式文件
  • 安全防御之密码技术
  • 【SPDK】【NoF】使用SPDK实现NVMe over Fabrics Target
  • vue实现小球掉落
  • 云南德宏州盈江县发生4.5级地震,震源深度10千米
  • 国税总局上海市税务局回应刘晓庆被举报涉嫌偷漏税:正依法依规办理
  • 上海市税务局:收到对刘某某存在涉税问题的举报,正依法依规办理
  • 埃尔多安:愿在土耳其促成俄乌领导人会晤
  • 证监会:2024年依法从严查办证券期货违法案件739件,作出处罚决定592件、同比增10%
  • 陕西榆林:全力推进榆林学院升格榆林大学