本文主要对SpringBoot2.x参数校验进行简单总结,其中SpringBoot使用的2.4.5
版本
一、引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <!-- lombok插件 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> </dependency>
二、实体类
User类:
package com.rtxtitanv.model; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.*; /** * @author rtxtitanv * @version 1.0.0 * @name com.rtxtitanv.model.User * @description 用户实体类 * @date 2021/8/15 16:28 */ @AllArgsConstructor @NoArgsConstructor @Data public class User { @NotNull(message = "id不能为空") private Long id; @Length(min = 6, max = 20, message = "用户名长度不小于6,不超过20") @NotNull(message = "用户名不能为空") private String username; @Pattern(regexp = "^[A-Z][A-Za-z0-9_]{5,19}$", message = "密码以大写英文字母开头,只包含英文字母、数字、下划线,长度在6到20之间") @NotNull(message = "密码不能为空") private String password; @Max(value = 60, message = "年龄最大为60") @Min(value = 18, message = "年龄最小为18") @NotNull(message = "年龄不能为空") private Integer age; @Email(message = "邮箱格式不正确") @NotEmpty(message = "邮箱不能为空") private String email; private String rank; }
通用响应类:
package com.rtxtitanv.model; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.http.HttpStatus; import java.io.Serializable; /** * @author rtxtitanv * @version 1.0.0 * @name com.rtxtitanv.model.CommonResult * @description 通用响应类 * @date 2021/8/15 17:35 */ @AllArgsConstructor @NoArgsConstructor @Data public class CommonResult<T> implements Serializable { private static final long serialVersionUID = 5231430760082814286L; private int code; private String message; private T data; public static <T> CommonResult<T> ok(String message, T data) { return new CommonResult<T>(HttpStatus.OK.value(), message, data); } public static <T> CommonResult<T> fail(int code, String message, T data) { return new CommonResult<>(code, message, data); } }
三、常用的校验注解
这里对一些用于参数校验的常用注解进行总结:
- @Null:必须为null。
- @NotNull:必须不为null。
- @AssertTrue:必须为true。
- @AssertFalse:必须为false。
- @Min(value):必须是一个大于等于指定值的数字。
- @Max(value):必须是一个小于等于指定值的数字。
- @DecimalMin(value):必须是一个大于等于指定值的数字。
- @DecimalMax(value):必须是一个小于等于指定值的数字。
- @Size(min=,max=):大小必须在指定的范围内。
- @Digits(integer, fraction):必须是一个数字,其值必须在可接受的范围内。
- @Past:必须是一个过去的日期。
- @Future:必须是一个将来的日期。
- @Pattern(regex=):必须符合指定的正则表达式。
- @Email:必须是一个有效的email地址。
- @Length(min=,max=):字符串长度是否在指定范围内。
- @NotBlank:必须非空且长度大于0。
- @NotEmpty:必须不为null或空。
- @URL(protocol=,host,port):必须是一个有效的URL,如果提供了protocol,host等,则还需满足提供的条件。