# vaild-demo **Repository Path**: zhang-zhixi/vaild-demo ## Basic Information - **Project Name**: vaild-demo - **Description**: 数据校验简单Demo,使用全局异常配合@Vaild校验数据 。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-07 - **Last Updated**: 2023-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 一个简单的全局异常处理配合@Vaild做数据校验的Demo。 ![输入图片说明](https://foruda.gitee.com/images/1659864915767616689/屏幕截图.png "屏幕截图.png") ### 常用参数 ```text @NotNull(message="名字不能为空") private String userName; @Max(value=120,message="年龄最大不能查过120") private int age; @Email(message="邮箱格式错误") private String email; 空检查 @Null 验证对象是否为null @NotNull:适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty) @NotBlank:适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0 @NotEmpty:适用于 String、Collection集合、Map、数组等等,加了@NotEmpty 注解的参数不能为 Null 或者 长度为 0 Booelan检查 @AssertTrue 验证 Boolean 对象是否为 true @AssertFalse 验证 Boolean 对象是否为 false 长度检查 @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内。 @Length(min=6,max=8,message="密码长度必须再6位到8位之间") @NotBlank(message="密码不能为空") private String password @Length(min=, max=) 字符串长度介于最小值和最大值之间。 @Length@Size实际使用时的区别: 用@length限制长度为100,@length验证的应该为100个字符的长度,如99个汉字+2个数字,@length并不会报错; ​ 但用@size限制长度为100,同样情况下则会报错,即超出限制长度 @Length限制长度为字符长度,@Size限制长度为个数长度 数值范围: @Range(min=,max=):被注解的元素其值在最小值和最大值之间,并且类型为BigDecimal,BigInteger,CharSequence,Integer,byte,short,int,long @Range(max = 80, min = 18, message = "必须大于等于18或小于等于80") private int age; 日期检查 @Past 验证 Date 和 Calendar 对象是否在当前时间之前 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Past(message = "必须为过去的时间") private Date createDate; @Future 验证 Date 和 Calendar 对象是否在当前时间之后 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Future(message = "必须为未来的时间") private Date createDate; @Pattern 验证 String 对象是否符合正则表达式的规则 @Pattern(regexp = "\\d{11}",message = "必须为数字,并且长度为11") private String mobile; .......等等 除此以外,我们还可以自定义一些数据校验规则 ``` ### 一些常见属性格式校验 ```java /** * @ClassName InsertUserForm * @Author zhangzhixi * @Description 添加用户表单 * @Date 2022-8-5 14:16 * @Version 1.0 */ @Data public class InsertUserForm { @NotBlank(message = "username不能为空") @Pattern(regexp = "^[a-zA-Z0-9]{4,20}$", message = "username内容不正确") @Schema(description = "用户名") private String username; @NotBlank(message = "password不能为空") @Pattern(regexp = "^[a-zA-Z0-9]{6,20}$", message = "password内容不正确") @Schema(description = "密码") private String password; @NotBlank(message = "name不能为空") @Pattern(regexp = "^[\\u4e00-\\u9fa5]{2,10}$", message = "name内容不正确") @Schema(description = "姓名") private String name; @NotBlank(message = "sex不能为空") @Pattern(regexp = "^男$|^女$", message = "sex内容不正确") @Schema(description = "性别") private String sex; @NotBlank(message = "tel不能为空") @Pattern(regexp = "^1\\d{10}$", message = "tel内容不正确") @Schema(description = "电话") private String tel; @NotBlank(message = "email内容不正确") @Email(message = "email内容不正确") @Schema(description = "邮箱") private String email; @NotBlank(message = "hiredate不能为空") @Pattern(regexp = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$", message = "hiredate内容不正确") @Schema(description = "入职日期") private String hiredate; @NotEmpty(message = "role不能为空") @Schema(description = "角色") private Integer[] role; @NotNull(message = "deptId不能为空") @Min(value = 1, message = "deptId不能小于1") @Schema(description = "部门") private Integer deptId; } ```