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)]
本次只总结常用的
有兴趣可查看官方文档
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #JAVA #Validation