1. 依赖
-
依赖
<dependencies> <!-- validator 数据校验 --> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency> </dependencies> -
spring boot已经集成了validator
2. 常用注解
-
@Validated和@Valid@Validatesd用于标记类、方法、形参,用在形参上无法提供嵌套验证功能,须在形参的成员变量上使用@Valid注解来配合使用。必须在类上使用@Validated注解标记才可以进行验证,否则所有验证都不会生效
-
空校验注解 修饰类型 说明 @Null任何类型 校验对象必须为空 @NotNUll任何类型 校验对象不为空,不能校验空字符串 @NotBlank字符串 字符串不能为空串 @NotEmpty字符串、集合、数组 字符串不能为空串、数组集合长度不为0 -
boolean校验注解 修饰类型 说明 @AssertFalseboolean 校验 boolean类型必须为false@AssertTrueboolean 校验 boolean类型必须为true -
日期校验注解 修饰类型 说明 @Past日期 校验的日期对象必须是一个 过去的时间@Future日期 校验的日期对象必须是一个 未来的时间 -
数值校验注解 修饰类型 说明 @Min数值 校验的 数字的值必须≥指定的值@Max数值 校验的 数字的值必须≤指定的值DecimalMin(value = "", inclusive = true)数值 inclusive为true时校验的数字要≥,为false时要>@DecimalMax(value = "", inclusive = true)数值 inclusive为true时校验的数字要≤,为false时要<@Digits(integer =, fraction =)小数 integer指定整数精度,fraction指定小数精度Length(min = , max = )字符串 字符串的长度在 min跟max之间@Size(min = , max = )字符串 字符串的长度在 min跟max之间@Range(min = , max = )数值 校验的 数字的值要在min跟max之间 -
特殊校验注解 修饰类型 说明 @CreditCardNumber字符串 校验的字符串为 信用卡类型@URL字符串 校验的字符串为 URL地址@Email(regexp = "正则")字符串 校验的字符串为 email邮箱格式@Pattern(regexp = "正则")字符串 校验的字符串是否匹配 正则
3. 栗子
-
栗子1
-
controller@Validated @RestController @RequestMapping("/test") public class TestController { @PostMapping("/test") public ResultBean<Object> test(@Validated @RequestBody UserDto userDto) { return null; } } -
javabean-
UserDto-校验参数@Data @Validated public class UserDto implements Serializable { @NotEmpty(message = "用户名不能为空") private String userName; @Pattern(regexp = "^1[3-9][0-9]{9}$", message = "请输入正确的手机号") private String userPhone; @Email(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", message = "请正确输入邮箱") private String userEmail; @Range(min = 1, max = 150, message = "年龄必须在1~150之间") private Integer userAge; @Past(message = "生日必须是过去的时间") private Date userBirthday; @Valid @NotEmpty(message = "地址不能为空") private List<Address> address; } -
Address-被嵌套的元素@Data @Validated public class Address implements Serializable { @NotEmpty private String province; @NotEmpty private String city; @NotEmpty private String area; private String address; }
-
-
-
栗子2
@Validated @RestController @RequestMapping("/login") public class LoginController { /** * 根据邮箱进行注册 * * @param email 邮箱 * @param password 密码 * @param confirmPassword 确认密码 * @return 封装了信息的 JavaBean */ @PostMapping("/registerByEmail") public ResultBean<Integer> registerByEmail(@Email(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", message = "请正确输入邮箱") @RequestParam String email, @Pattern(regexp = "[A-Za-z0-9]{6,18}", message = "密码应该由6-18位的数字或字母组成") @RequestParam String password, @Pattern(regexp = "[A-Za-z0-9]{6,18}", message = "两次密码不一致") @RequestParam String confirmPassword) { int result = customerService.save(email, password, confirmPassword); // 判断是否成功 return result > 0 ? ResultBean.success(StatusCodeEnum.SUCCESS, result) : ResultBean.error(StatusCodeEnum.REGISTER_ERROR, result); } }
本文详细介绍SpringBoot中Validator的使用,包括依赖配置、常见注解及其应用,如@Validated、@Valid、@NotNull等,以及如何进行数据校验,涵盖空校验、boolean校验、日期校验、数值校验等,并通过两个实例演示如何在控制器和JavaBean中实现参数校验。

被折叠的 条评论
为什么被折叠?



