Springboot校验工具类详细代码示例

 更新时间:2024年02月02日 11:32:24   作者:憨憨小江  
这篇文章主要给大家介绍了关于Springboot校验工具类的相关资料,工具类里面主要是封装了一些常用字段验证方法,文中通过代码介绍的非常详细,需要的朋友可以参考下

校验工具类

这个实现逻辑很简单,就是调用string的正则表达式

我这里的代码要导入糊涂工具包

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.17</version>
</dependency>
import cn.hutool.core.util.StrUtil;

public class RegexUtils {
    /**
     * 是否是无效手机格式
     * @param phone 要校验的手机号
     * @return true:符合,false:不符合
     */
    public static boolean isPhoneInvalid(String phone){
        return mismatch(phone, RegexPatterns.PHONE_REGEX);
    }
    /**
     * 是否是无效邮箱格式
     * @param email 要校验的邮箱
     * @return true:符合,false:不符合
     */
    public static boolean isEmailInvalid(String email){
        return mismatch(email, RegexPatterns.EMAIL_REGEX);
    }

    /**
     * 是否是无效验证码格式
     * @param code 要校验的验证码
     * @return true:符合,false:不符合
     */
    public static boolean isCodeInvalid(String code){
        return mismatch(code, RegexPatterns.VERIFY_CODE_REGEX);
    }

    // 校验是否不符合正则格式
    private static boolean mismatch(String str, String regex){
        if (StrUtil.isBlank(str)) {
            return true;
        }
        return !str.matches(regex);
    }
}

正则表达式常量类

public abstract class RegexPatterns {
    /**
     * 手机号正则
     */
    public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";
    /**
     * 邮箱正则
     */
    public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
    /**
     * 密码正则。4~32位的字母、数字、下划线
     */
    public static final String PASSWORD_REGEX = "^\\w{4,32}$";
    /**
     * 验证码正则, 6位数字或字母
     */
    public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$";

}

附:自定义注解工具类

还有一些情况,如果业务逻辑实在比较复杂,前端传递来的是字符串,在service层才转换成对象的时候,就只能自定义校验工具类了。

我写了个demo,还是很好用的,不过需要手动调用校验方法

import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.http.HttpStatus;

import javax.validation.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.Set;

/**
 * @Author : wangbin
 * @Date : 2023/2/16 14:49
 * @Description:
 */
public class ValidationUtils {
    public static void validate(@Valid Object user,Class<?> ... clazz) {
        try (ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
            Validator validator = factory.getValidator();
            if(clazz==null){
                clazz=new Class[0];
            }
            Set<ConstraintViolation<@Valid Object>> validateSet = validator.validate(user,clazz );
            if (!CollectionUtils.isEmpty(validateSet)) {
                String messages = validateSet.stream()
                        .map(ConstraintViolation::getMessage)
                        .reduce((m1, m2) -> m1 + ";" + m2)
                        .orElse("参数输入有误!");
                throw DataImportException.httpError(HttpStatus.BAD_REQUEST,messages);
            }
        }


    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    static class User {
        @NotNull(message = "姓名不能为空",groups = ProcessInfoUpdateGroup.class)
        private String name;



        @Max(value = 200, message = "age不能超200")
        @Min(value = 0, message = "age不能小于0",groups = ProcessInfoCreateGroup.class)
        private Integer age;
    }

    public static void main(String[] args) {
        User wb = new User(null, 201);

        String s = com.alibaba.fastjson.JSON.toJSONString(wb);

        User user = JSON.parseObject(s, User.class);
        validate(user);
    }
}

总结 

到此这篇关于Springboot校验工具类的文章就介绍到这了,更多相关Springboot校验工具类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot如何开启并使用邮件服务

    Spring Boot如何开启并使用邮件服务

    这篇文章主要介绍了Spring Boot如何开启并使用邮件服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 自定义类加载器的父类为何是AppClassLoader说明

    自定义类加载器的父类为何是AppClassLoader说明

    这篇文章主要介绍了自定义类加载器的父类为何是AppClassLoader说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java实现贪吃蛇游戏源码

    Java实现贪吃蛇游戏源码

    这篇文章主要为大家详细介绍了Java实现贪吃蛇游戏源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Java 如何解析key为动态的json操作

    Java 如何解析key为动态的json操作

    这篇文章主要介绍了Java 如何解析key为动态的json操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring中@ConfigurationProperties的用法解析

    Spring中@ConfigurationProperties的用法解析

    这篇文章主要介绍了Spring中@ConfigurationProperties的用法解析,传统的Spring一般都是基本xml配置的,后来spring3.0新增了许多java config的注解,特别是spring boot,基本都是清一色的java config,需要的朋友可以参考下
    2023-11-11
  • Java实现走迷宫回溯算法

    Java实现走迷宫回溯算法

    这篇文章主要为大家详细介绍了Java实现走迷宫回溯算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • IDEA中使用Typora编辑md文件的方法

    IDEA中使用Typora编辑md文件的方法

    这篇文章主要介绍了IDEA中使用Typora编辑md文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • SpringBoot集成Knife4j/Swagger:接口文档自动生成,告别手写API文档

    SpringBoot集成Knife4j/Swagger:接口文档自动生成,告别手写API文档

    本文将详细讲解SpringBoot如何快速集成Knife4j/Swagger,从环境搭建、基础配置、接口注解使用,到进阶优化,全程附完整代码示例,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • 使用maven命令安装jar包到本地仓库的方法步骤

    使用maven命令安装jar包到本地仓库的方法步骤

    这篇文章主要介绍了使用maven命令安装jar包到本地仓库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • SpringBoot+Nacos+Kafka微服务流编排的简单实现

    SpringBoot+Nacos+Kafka微服务流编排的简单实现

    本文主要介绍了SpringBoot+Nacos+Kafka微服务流编排的简单实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论