# smart-validator-plus
**Repository Path**: hanlen/smart-validator-plus
## Basic Information
- **Project Name**: smart-validator-plus
- **Description**: smart-validator升级版
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 1
- **Created**: 2020-07-20
- **Last Updated**: 2022-06-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 原smart-validator Plus版
轻量级服务端校验框架
支持注解、功能齐全、使用简便
## 一、功能简介
主要提供便捷的后台数据校验功能,支持单个字段或参数校验,也支持通过注解校验对象,用法简单。
提供基本的非空、长度、大小等校验方法,也提供一些特殊的正则校验、身份证、电话、邮箱、IP等校验方法。
## 二、用法介绍
目前提供以下校验方法,支持后续持续扩展
| 注解 | 说明 |
| :---------: | :------ |
| NotNull | 非空校验 |
| Max | 最大值校验 |
| Min | 最小值校验 |
| MaxLength | 最大长度校验,支持集合、数组长度校验 |
| MinLength | 最大长度校验,支持集合、数组长度校验 |
| IdCard | 身份证校验 |
| Email | 邮箱格式校验 |
| Phone | 手机号校验 |
| IP | IP地址校验 |
| Chinese | 中文校验 |
| English | 英文校验 |
| Regex | 自定义正则校验 |
| Date | 日期格式校验 |
### 1. 单个参数验证
```java
SmartValidator.is("a").notNull();
SmartValidator.is("test").maxLength(20).minLength(4);
SmartValidator.is(50).min(20).max(60);
```
通过and()支持连写(连写直接切换校验对象)
### 2. 校验整个对象(通过注解)在原有基础上增加Group分组校验
在类的属性上定义注解
```java
public class User {
@Group(names = {"update"})
@NotNull(msg = "更新的编号不能为空")
private Long id;
@Group(names = {"add"})
@NotNull(msg = "姓名不能为空")
@MaxLength(value = 20,msg = "姓名不能超过20个字")
private String name;
private Date birthday;
@IdCard
private String idcard;
@Max(30)
@Min(12)
private int age;
@Email
@MaxLength(50)
private String email;
@Phone
private String phone;
@Regex("[1-9]([0-9]{5,11})")
private String qq;
//get... set..
}
```
然后调用 SmartValidator.check(user)方法即可
同样支持连写
```java
SmartValidator.check(user).and("2017-06-05").date("yyyy-MM-dd");
```
### 3.校验不通过时处理
SmartValidator.Config 校验配置 ONE 单条 ALL 所有
SmartValidator.Config.ONE 前提下
校验不通过会抛出ParamsException(运行时异常)
且在原基础上增加自定义异常SPI扩展
默认实现策略 com.smart.validate.exception.DefaultStrategy 你可以定义自己的异常
使用时一般不需要特殊处理,由于后台校验是安全性校验,一般用于拦截非法操作,所以不用友好提示,所以推荐不做任何捕获或者特殊处理,如外层有catch,建议单独捕获后向上抛出。
如果想做异常捕获,也可以自行在代码中添加try/catch(不推荐),或者添加全局的拦截器捕获该类异常。
### 4.增加对所有字段校验完成后返回失败集合
写法: ValidateResult validateResult = SmartValidator.check(user, groups, SmartValidator.Config.ALL).getResult();
### 5.去除了所有不必要的第三方依赖
### 三、部署说明
项目使用maven构建,也可以下载源码自行编译