param-validate的使用

param-validate的使用

下载

如果你只想使用此工具,可以前往github下载其jar包。点击进入下载页面

解压和安装

解压后,你将会得到下述两个文件

运行install.bat(请确保你的M2_HOME是否正确配置)

使用param-validate

接下来我们创建一个maven项目,引入

        <dependency>
            <groupId>com.github.18338862369</groupId>
            <artifactId>param-validate</artifactId>
            <version>1.0.0</version>
        </dependency>

可以看到其关联了SpringBoot-web启动器依赖、aspectj依赖和lombok依赖,如果版本与你的程序冲突,请手动将其所关联的依赖排除,但是请确保项目中引入了相关的依赖。

注解介绍

完成了上面的操作,就可以使用param-validate了,在使用之前,我们先了解一下它的四个注解:

@Verify注解

标注在参数、字段上,用于标注需要校验的数据以及其校验的规则。

  • name:描述,当校验结果为false时,返回用户提示信息时使用
  • maxLength:最大长度,用于判断字符串类型,如果时默认值代表不进行判断
  • minLength:最小长度,用于判断字符串类型,如果时默认值代表不进行判断
  • required:是否为必填属性
  • notNull:是否允许为空
  • regular:是否需要进行正则校验,如果需要正则内容是什么,默认为不进行正则校验
  • isEntity:是否是一个entity,如果是,递归调用判断其内的属性

@RequestMap注解

用于标注Controller方法的参数,用于指定Map类型参数。

  • baseEntityList制定Entity的全类名,如果Entity的属性名和key一致,就进行参数校验,校验规则由Entity中加了@Verify注解的属性来决定

@RequestEntity注解

用法同上,不过其标注的是Entity类型。

@EnableVerify注解

用于标注在SpringBoot启动类

  • execution:指定execution表达式,只有execution标识的方法才会进行全局参数校验

创建测试环境

创建启动类

在启动类上加入@EnableVerify(execution = "execution(* cn.giao.web..*(..))")注解

package cn.giao;

import com.github.validate.annotation.EnableVerify;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author rayfoo@qq.com
 * @version 1.0
 * <p></p>
 * @date 2020/8/9 16:05
 */
@SpringBootApplication
@EnableVerify(execution = "execution(* cn.giao.web..*(..))")
public class Runner {

    public static void main(String[] args) {
        SpringApplication.run(Runner.class, args);
    }

}

创建一个java实体

在实体上引入@Verify注解,标注校验的规则:

package cn.giao.entity;

import com.github.validate.annotation.Verify;
import com.github.validate.enums.RegexOption;
import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * @author rayfoo@qq.com
 * @version 1.0
 * @date 2020/8/3 19:03
 * @description 用户实体
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User implements Serializable {

    private static final long serialVersionUID = -1840831686851699943L;

    /**
     * 主键
     */
    private Long id;

    /**
     * 用户名
     */
    @Verify(name = "用户名", regular = RegexOption.USERNAME_REGEX)
    private String username;

    /**
     * 加密后的密码
     */
    @Verify(name = "密码", regular = RegexOption.PASSWORD_REGEX)
    private String password;

    /**
     * 加密使用的盐
     */
    private String salt;

    /**
     * 邮箱
     */
    @Verify(name = "邮箱", regular = RegexOption.EMAIL_REGEX)
    private String email;

    /**
     * 手机号码
     */
    @Verify(name = "手机号", regular = RegexOption.PHONE_NUMBER_REGEX)
    private String phoneNumber;

    /**
     * 状态,-1:逻辑删除,0:禁用,1:启用
     */
    private Integer status;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 上次登录时间
     */
    private Date lastLoginTime;

    /**
     * 上次更新时间
     */
    private Date lastUpdateTime;

    @Verify(name = "用户", isEntity = true, notNull = false)
    private User user;

}

创建Controller类测试

package cn.giao.web;

import cn.giao.entity.User;
import com.github.validate.annotation.RequestEntity;
import com.github.validate.annotation.RequestMap;
import com.github.validate.annotation.Verify;
import com.github.validate.enums.RegexOption;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 * @author rayfoo@qq.com
 * @version 1.0
 * <p></p>
 * @date 2020/8/9 16:12
 */
@RestController
public class TestController {

    @GetMapping("/test")
    public String test(@Verify(name = "用户名",regular = RegexOption.USERNAME_REGEX)String username){
        return "validate success";
    }

    @PostMapping("/test")
    public String test(@RequestBody @RequestEntity User user){
        return "validate success";
    }

    @PostMapping("/user")
    public String test(@RequestBody @RequestMap(baseEntityList = {"cn.giao.entity.User"}) Map user){
        return "validate success";
    }

}

postman测试

https://github.com/18338862369/param-validate
https://gitee.com/rayfoo/param-validate

页面有完整的源码,如果这工具对你有帮助,请帮我点个star哦

posted @ 2020-07-23 14:28  张瑞丰  阅读(982)  评论(0编辑  收藏  举报