校验参数个数工具类

项目中有个需求:前后端参数一致性校验,在某业务场景下后端代码需要校验参数个数,因此设计了1个工具类方便大伙使用,特此简单记录下。

一、校验工具类CheckNumInsideParamters

/**
 * 校验参数字符串和列表个数
 *
 * @DATE 2024/6/6
 **/
public class CheckNumInsideParamters {

    /**
     * 校验字符串列表参数个数
     *
     * @param parameters 参数
     */
    public static void checkInsideList(List<?>... parameters) {
        for (List<?> parameter : parameters) {
            checkInsideListParameter(parameter, null, 0);
        }
    }

    /**
     * 校验字符串个数
     *
     * @param parameters 参数
     */
    public static void checkInsideStr(String... parameters) {
        for (String parameter : parameters) {
            checkInsideListParameter(parameter, QueryParameterSizeConstant.SEMICOLON, 0);
        }
    }


    /**
     * 参数个数校验
     * 如果是列表,则customLimit表示其长度
     * 如果是字符串,则customLimit表示其通过分隔符strDelimiterr切分后的列表长度
     * (如果strDelimiterr为空,则customLimit表示字符串长度)
     *
     * @param parameter     参数
     * @param strDelimiterr 分隔符
     * @param customLimit   自定义阈值长度
     */
    public static void checkInsideListParameter(Object parameter, String strDelimiterr, int customLimit) {
        int limit = customLimit > 0 ? customLimit : QueryParameterSizeConstant.DEFAULT_SIZE;
        if (parameter instanceof List && ((List<?>) parameter).size() > limit) {
            // 根据业务需要,这里抛出自定义异常
            System.out.println("list exceed limit error");
        } else if (parameter instanceof String) {
            if (StringUtils.isNotBlank(strDelimiterr) &&
                    ((String) parameter).split(strDelimiterr, limit + 1).length > limit) {
                System.out.println("str exceed limit error");
            } else if (((String) parameter).length() > limit) {
                System.out.println("str exceed limit error");
            }
        }
    }
}

二、单元测试ParameterSizeTest

/**
 * 参数校验测试类
 *
 * @DATE 2024/6/6
 **/
@SpringBootTest
public class ParameterSizeTest {
    // 字符串参数个数校验
    @Test
    public void strTest()  {
        String str = "zhangsanfeng0;zhangsanfeng1;zhangsanfeng2;zhangsanfeng3;";
        CheckNumInsideParamters.checkInsideStr(str);
    }

    // 列表参数个数校验
    @Test
    public void listTest()  {
        List<String> list = new ArrayList<>();
        list.add("zhangsanfeng0");
        list.add("zhangsanfeng1");
        list.add("zhangsanfeng2");
        list.add("zhangsanfeng3");
        CheckNumInsideParamters.checkInsideList(list);
    }
}

三、测试验证

1.字符串参数个数校验

在这里插入图片描述

2.列表参数个数校验

在这里插入图片描述

四、项目结构及源码

1.项目结构

在这里插入图片描述

2.源码下载

demo-springboot-mybatisplus
欢迎star

相关推荐

  1. Springboot 校验工具

    2024-06-11 23:14:04       32 阅读
  2. 手机号码校验工具(正则表达式)

    2024-06-11 23:14:04       38 阅读
  3. Hutool工具包中的Validator数据校验

    2024-06-11 23:14:04       19 阅读
  4. SpringBoot参数校验

    2024-06-11 23:14:04       35 阅读

最近更新

  1. Rust入门实战 编写Minecraft启动器#2建立资源模型

    2024-06-11 23:14:04       1 阅读
  2. three.js利用着色器实现波浪效果

    2024-06-11 23:14:04       1 阅读
  3. Python pdfplumber库:轻松解析PDF文件

    2024-06-11 23:14:04       1 阅读
  4. 【必读】HTML中的BFC:10个你不知道的惊人事实

    2024-06-11 23:14:04       1 阅读

热门阅读

  1. Spring Boot 事务传播机制详解

    2024-06-11 23:14:04       11 阅读
  2. 编程爱情——向日葵(小说)

    2024-06-11 23:14:04       9 阅读
  3. 道路运输安全员真题考试题库分享

    2024-06-11 23:14:04       9 阅读
  4. 【python】时间和日期

    2024-06-11 23:14:04       9 阅读
  5. Web前端后端框架:深度剖析与发展趋势

    2024-06-11 23:14:04       9 阅读
  6. 主题切换之根元素CSS自定义类

    2024-06-11 23:14:04       11 阅读
  7. 怎么使用join将数组转为逗号分隔的字符串

    2024-06-11 23:14:04       9 阅读
  8. 最大二叉树-力扣

    2024-06-11 23:14:04       7 阅读
  9. 数组中的map方法

    2024-06-11 23:14:04       8 阅读
  10. RV32I指令集

    2024-06-11 23:14:04       10 阅读