spring boot项目,所以直接引入web的starter的依赖即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
常用的注解:
public class Car {
@NotBlank // 不能为null,不能为空字符串
private String manufacturer;
@NotNull // 不能为null
@Size(min = 2, max = 14) // 字符串长度位于2到14之间
private String licensePlate;
@Min(2)
@Max(5) // 注意,未添加NotNull注解,所以seatCount可以为null,只有当seatCount不为null@Min @Max才会做校验
private Integer seatCount;
@AssertTrue // registered不为null时,则值需是true
private Boolean registered;
// groups用于指定所属的校验组
@AssertTrue(message = "The car has to pass the vehicle inspection first", groups = CarChecks.class)
private Boolean passedVehicleInspection;
@Valid // 表明应对driver对象内字段继续做校验
@NotNull
private Driver driver;
@Valid // 表明应对passengers里的Person对象内字段继续做校验
@Size(max = 2) // 表明passengers最多只能有两个对象
private List<Person> passengers = new ArrayList<>();
private String brand;
@Range(min = 2,max = 4) // 作用同@Min @Max
private Integer doors;
private CarTypeEnum carTypeEnum;
// get set......
}
Validator接口有三个方法,可用于验证整个实体或仅验证实体的单个属性
Validator#validate() 验证所有bean的所有约束
Validator#validateProperty() 验证单个属性
Validator#validateValue() 检查给定类的单个属性是否可以成功验证
package util;
import util.bean.CommonResult;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.List;
import java.util.Set;
/**
* @description: 参数校验工具类
* @author: ShiHuaHao
**/
public class ValidateUtil {
private final static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
/**
* 参数校验
*
* @param date 参数对象(泛型里面的对象加@Valid才可校验)
* @param var 分组
* @return
*/
public static CommonResult<String> paramValidate(Object date, Class<?>... var) {
StringBuilder message = new StringBuilder();
Set<ConstraintViolation<Object>> violations = validator.validate(date, var);
for (ConstraintViolation<Object> violation : violations) {
message.append("参数").append(violation.getPropertyPath().toString()).append("校验不通过,原因:").append(violation.getMessage()).append("。");
}
if (BeeStringUtil.isNotEmpty(message.toString())) {
return CommonResult.failWithMessage(message.toString());
}
return CommonResult.success();
}
/**
* 参数校验
*
* @param dates
* @param var
* @return
*/
public static CommonResult<String> paramValidate4List(List<?> dates, Class<?>... var) {
StringBuilder message = new StringBuilder();
for (int i = 0; i < dates.size(); i++) {
Object date = dates.get(i);
Set<ConstraintViolation<Object>> violations = validator.validate(date, var);
for (ConstraintViolation<Object> violation : violations) {
message.append("第").append(i + 1).append("条数据的参数").append(violation.getPropertyPath().toString()).append("校验不通过,原因:").append(violation.getMessage()).append("。");
}
}
if (BeeStringUtil.isNotEmpty(message.toString())) {
return CommonResult.failWithMessage(message.toString());
}
return CommonResult.success();
}
//分组
public interface Add {}
public interface Update {}
public interface Del {}
}