• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Hibernate validator使用以及自定义校验器注解

java 搞代码 4年前 (2022-01-05) 20次浏览 已收录 0个评论

这篇文章主要介绍了Hibernate validator使用以及自定义校验器注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,用于对 Java Bean 中的字段的值进行验证。Hibernate Validator则是Hibdernate提供的一种对该规范的实现。

――即Hibernate Validator是用来做参数校验。

使用Hibernate Validator提供的注解进行参数校验

注解 释义
@Null 必须

来源gaodai.ma#com搞##代!^码@网

为null

@NotNull 不能为null
@AssertTrue 必须为true
@AssertFalse 必须为false
@Min 必须为数字,其值大于或等于指定的最小值
@Max 必须为数字,其值小于或等于指定的最大值
@DecimalMin 必须为数字,其值大于或等于指定的最小值
@DecimalMax 必须为数字,其值小于或等于指定的最大值
@Size 集合的长度
@Digits 必须为数字,其值必须再可接受的范围内
@Past 必须是过去的日期
@Future 必须是将来的日期
@Pattern 必须符合正则表达式
@Email 必须是邮箱格式
@Length 长度范围
@NotEmpty 不能为null,长度大于0
@Range 元素的大小范围
@NotBlank 不能为null,字符串长度大于0(限字符串)

引入依赖

  org.hibernatehibernate-validator6.0.15.Final

Hibernate Validator常用注解

创建测试类

注意必须先进行为null判断,否则其他注解有的不会生效。
比如username加了@Length而不加@NotNull注解,当没有输入username,那么@Length判断将不会生效,判断为null的有@NotNull、@NotEmpty以及@NotBlank
建议自行去掉@NotNull再测试一下

 package com.dfyang.validator.entity; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Range; import javax.validation.constraints.NotBlank; public class User { @NotBlank(message = "名称不能为空") private String name; @Range(min = 1, max = 120, message = "年龄必须为1-120岁") private Integer age; @NotBlank(message = "描述不能为空") private String description; @NotNull @Length(min = 6, max = 18, message = "用户名长度必须为6-18位") private String username; @NotNull @Length(min = 6, max = 18, message = "密码长度必须为6-18位") private String password; /** get、set方法 */ }

创建测试Controller

@Valid用在参数上,表示对该参数进行校验。

如果对参数校验发现有误,会将错误注入到BindingResult中

我们这里将错误进行打印,也可以直接抛出异常

 package com.dfyang.validator.controller; import com.dfyang.validator.entity.User; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; @RestController public class UserController { @GetMapping("/insert") @ResponseBody public User insertUser(@Valid User user, BindingResult result) { if (result.hasErrors()) { for (ObjectError error : result.getAllErrors()) { System.err.println(error.getDefaultMessage()); } } return user; } }

输入 http://localhost:8080/insert?name=张三&descripyion=&age=0&username=123123

使用自定义校验器进行参数校验

创建自定义注解,用于判断年龄是否符合约束

 package com.dfyang.validator.constraint; import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 性别约束 */ @Target({ ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = SexConstraintValidator.class) public @interface Sex { String message() default "性别有误"; Class[] groups() default { }; Class[] payload() default { }; }

判断注解的值是否符合约束,这里进行了为null判断,也可以不进行在多加一个@NutNull

 package com.dfyang.validator.constraint; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; /** * 性别约束逻辑判断 */ public class SexConstraintValidator implements ConstraintValidator { @Override public boolean isValid(String value, Co

以上就是Hibernate validator使用以及自定义校验器注解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Hibernate validator使用以及自定义校验器注解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址