# smart-validator
**Repository Path**: z_import/smart-validator
## Basic Information
- **Project Name**: smart-validator
- **Description**: 轻量级服务端校验框架
支持注解、支持单独校验
功能齐全、使用简便
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 32
- **Created**: 2018-04-28
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# smart-validator
轻量级服务端校验框架
支持注解、功能齐全、使用简便
## 一、功能简介
主要提供便捷的后台数据校验功能,支持单个字段或参数校验,也支持通过注解校验对象,用法简单。
提供基本的非空、长度、大小等校验方法,也提供一些特殊的正则校验、身份证、电话、邮箱、IP等校验方法。
## 二、用法介绍
目前提供以下校验方法,支持后续持续扩展
  | 注解        | 说明    |
  | :---------: | :------ |
  | NotNull | 非空校验 |
  | Max | 最大值校验 |
  | Min | 最小值校验 |
  | MaxLength | 最大长度校验,支持集合、数组长度校验 |
  | MinLength | 最大长度校验,支持集合、数组长度校验 |
  | IdCard | 身份证校验 |
  | Email | 邮箱格式校验 |
  | Phone | 手机号校验 |
  | IP | IP地址校验 |
  | Chinese | 中文校验 |
  | English | 英文校验 |
  | Regex | 自定义正则校验 |
  | Date | 日期格式校验 |
### 1. 单个参数验证
```java
ValidateUtils.is("a").notNull();
 
ValidateUtils.is("test").maxLength(20).minLength(4);
 
ValidateUtils.is(50).min(20).max(60);
```
通过and()支持连写(连写直接切换校验对象)
```java
ValidateUtils.is("a").notNull().and("test").maxLength(20).minLength(4).and(50).min(20).max(60);
```
支持自定义错误信息
```java
ValidateUtils.is("test").maxLength(20,"最大长度不能超过20个字").minLength(4,"最小长度不能少于4个字");
```
### 2. 校验整个对象(通过注解)
在类的属性上定义注解,同时支持自定义错误信息
```java
public class User {
    @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..
}
```
然后调用ValidateUtils.check()方法即可
```java
try {
    //....
    ValidateUtils.check(user);
    //.....
}catch (ParamsException e){
    throw e;
}catch (Exception e){
    //...
}
```
同样支持连写
```java
ValidateUtils.check(user).and("2017-06-05").date("yyyy-MM-dd");
```
### 3.校验不通过时处理
校验不通过会抛出ParamsException(运行时异常)
使用时一般不需要特殊处理,由于后台校验是安全性校验,一般用于拦截非法操作,所以不用友好提示,所以推荐不做任何捕获或者特殊处理,如外层有catch,建议单独捕获后向上抛出。
如果想做异常捕获,也可以自行在代码中添加try/catch(不推荐),或者添加全局的拦截器捕获该类异常。
### 三、部署说明
获取最新版本的jar包即可-[下载地址](https://gitee.com/fetech-framework/smart-validator/releases/v1.1.0),然后添加进项目的依赖库中。
项目使用maven构建,也可以下载源码自行编译
#### 第三方库依赖如下,一般项目都有使用
```xml
    1.7.13
    2.6
    3.2.2
    1.9.3
    
        org.slf4j
        slf4j-api
        ${slf4j.version}
    
    
        org.slf4j
        slf4j-log4j12
        ${slf4j.version}
    
    
        commons-lang
        commons-lang
        ${commons.lang.version}
    
    
        commons-collections
        commons-collections
        ${commons.collections.version}
    
    
        commons-beanutils
        commons-beanutils
        ${commons.beanutils.version}
    
```
### 欢迎使用其他系列产品
melon-idfactory [传送门](https://gitee.com/fetech-platform/melon-idfactory)