irpas技术客

java校验组(Validation)_一个石家庄的程序员_java validation

网络 6278

Validation校验组 导包hibernatespringframework 创建异常类校验器的工具类 例子常用校验注解

导包 hibernate <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>版本自行查找</version> </dependency> springframework <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> parent是springframework不用写version 创建异常类

自定义异常类,如果复制请勿导入lombok第三方jar包

@Data public class RRException extends RuntimeException { private static final long serialVersionUID = 1L; private String msg; private int code = 99; public RRException(String msg) { super(msg); this.msg = msg; } public RRException(String msg, Throwable e) { super(msg, e); this.msg = msg; } public RRException(String msg, int code) { super(msg); this.msg = msg; this.code = code; } public RRException(int code, String msg) { super(msg); this.msg = msg; this.code = code; } public RRException(String msg, int code, Throwable e) { super(msg, e); this.msg = msg; this.code = code; } } 校验器的工具类

可在也业务代码里校验入参对象

import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import java.util.Set; public class ValidatorUtils { private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); public ValidatorUtils() { } public static void validateEntity(Object object, Class<?>... groups) throws RRException { Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups); if (!constraintViolations.isEmpty()) { ConstraintViolation<Object> constraint = (ConstraintViolation) constraintViolations.iterator().next(); throw new RRException(constraint.getMessage(), 501); } } /*新增组*/ public interface Add { } /*删除组*/ public interface Remove { } /*修改组*/ public interface Update { } } 例子

有一个pojo类叫User,里面有两个n个参数,如添加操作则可在username属性上加上@NotBlank(message = “姓名不能为空”, groups = {ValidatorUtils.Add.class})

Controller层入参user对象,在service业务代码里可去调用 ValidatorUtils.validateEntity(user, ValidatorUtils.AddAdd.class)来进行验证

如果username属性是’ '或者null 则会报501,“姓名不能为空”

常用校验注解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AHOnpRbl-1608542607048)(C:\Users\15263\AppData\Roaming\Typora\typora-user-images\1608541216363.png)]

本次只总结常用的

注解针对类型说明@Null任何类型对象必须是null@NotNull任何类型对象必须是非null@NotBlank字符串校验字符串去了空格后穿度不为0@NotEmpty字符串、集合、数组字符串不能为空,集合数组里面的元素个数不能为0@AssertTrue布尔该布尔类型必须为true@AssertFalse布尔该布尔类型必须为false@Min数字类型最小不能小于指定数值@Max数字类型最大不能大于指定数值@Digits(integer=,fraction=)数字类型(小数)integer指定整数位数,fraction指定小数位数@Range(min =,max = )数字类型、字符串校验对象的值在min跟max之间@Length(min =,max = )字符串校验对象的值的长度在min和max区间内@Size(min =,max = )字符串、集合、数组校验对象的值在min和max区间内,如字符长度、集合大小@Pattern字符串校验对象的值必须符合指定的正则表达式

有兴趣可查看官方文档


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #JAVA #Validation