本人菜B一个,所谓好笔头不如烂记性,但是我有一个好记性,所以还是拿个烂笔头记下来,方便以后使用
使用HibernateValidation之前,首先我们需要导入5个包,一个都不能少
也就是我从官网下载的压缩包下hibernate-validator-5.1.3.Final\dist\lib\required这个路径下的五个jar包,他们当时的版本分别是
classmate-1.0.0.jar
javax.el-2.2.4.jar
javax.el-api-2.2.4.jar
jboss-logging-3.1.3.GA.jar
validation-api-1.1.0.Final.jar
好了,之后我们就可以写测试了

----------------------------User类--------------------------
//导入这个包
import javax.validation.constraints.NotNull;
public class User {private String name;@NotNull(message = "姓名不能为空!")public String getName() {//get方法上面加标签,注意是GETreturn name;}public void setName(String name) {this.name = name;}
}
----------------------------测试类--------------------------
public static void main(String[] aaa) {ValidatorFactory factory = Validation.buildDefaultValidatorFactory();Validator validator = factory.getValidator();User person = new User();Set<ConstraintViolation<User>> constraintViolations = validator.validate(person);System.out.println(constraintViolations.size());System.out.println(constraintViolations);//要判断是否校验通过只需要判断constraintViolations.size()即可}------------------写到这里一个基本的验证就已经完成了,但是在实际开发当中,我们往往会遇到对同一个User类进行不同的操作,比如插入操作的时候,名称不能为空,但是修改的时候名称可以为空,这种情况我们需要如下改进-----------------
首先:要写两个接口
一个接口会告诉HibernateValidation我们是添加操作,Name必须不为空
另一个接口告诉HibernateValidation我们是修改操作,Name可以为空
public interface Add {
//这个接口里边什么都不需要写,就这样即可
}
public interface Edit {
//这个接口里边什么都不需要写,就这样即可
}
---------------修改之后的User类------------------------------
public class User {private String name;//多出了一个groups的东西,说明下面我在Test类中,需要指定我的测试//是什么操作,是Add还是Edit,如果是Add //HibernateValidation就会校验,否则,不会校验@NotNull(message = "姓名不能为空!", groups = { Add.class })public String getName() {return name;}public void setName(String name) {this.name = name;}
}
-------------------修改之后的测试类--------------------------
public static void main(String[] aaa) {User person = new User();person.setName("AAS");ValidatorFactory factory = Validation.buildDefaultValidatorFactory();Validator validator = factory.getValidator();//主要是这里发生了变化,这里告诉HibernateValidation是添加操作,还是修改操作Set<ConstraintViolation<User>> constraintViolations = validator.validate(person, Edit.class);//constraintViolations.size()不等于0,说明不通过System.out.println(constraintViolations.size());for (ConstraintViolation<User> c : constraintViolations) {//打印信息System.out.println(c.getMessage());}}

Java-HibernateValidation校验bean相关推荐

  1. Java数据校验(Bean Validation / JSR303)

    文档: http://beanvalidation.org/1.1/spec/ API : http://docs.jboss.org/hibernate/beanvalidation/spec/1. ...

  2. java中注解动态传参_Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性)...

    Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性)java 前言:因为前段时间忙于写接口,在接口中须要作不少的参数校验,本着简洁.高效的原则,便写了这个小工具供本身使 ...

  3. spring boot 菜鸟教程学习:spring是一个超级大工厂能够管理java对象(bean)和他们之间的关系(依赖注入)

    springboot的java对象叫做bean 用一个叫依赖注入的方法来管理bean的依赖关系 说白了 就是bean是节点 依赖注入能够构建节点之间的关系 创建bean的三种方式 如何依赖注入?

  4. 零配置 之Spring基于Java类定义Bean配置元数据

    转载自  [第十二章]零配置 之 12.4 基于Java类定义Bean配置元数据 --跟我学spring3 12.4  基于Java类定义Bean配置元数据 12.4.1  概述 基于Java类定义B ...

  5. java文件与bean所定义的_Spring定义bean的三种方式和自动注入

    前言:随着一个项目规模的增大,我们不得不引入许多Java bean对象,而这些对象一般来说是在Spring的配置文件applicationContext.xml中进行配置的,这样就声明了这是一个由Sp ...

  6. java正则校验密码 长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种组合 或者 其中任意三种组合

    java正则校验密码必须是包含大小写字母.数字.特殊符号的8位以上四种组合 或者 其中任意三种组合 一.排除法和详细解释 1.排除大写字母.小写字母.数字.特殊符号中1种组合.2种组合.3种组合,那么 ...

  7. Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式...

    Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...

  8. 使用java方式装配Bean

    首先创建一个项目 然后是项目名 下图: 创建完项目先配置pom.xml依赖关系 <?xml version="1.0" encoding="UTF-8"? ...

  9. Struts2报错Caused by: java.lang.NoSuchMethodException: bean.Student.init()

    错误 错误日志 21-Oct-2019 15:14:13.922 SEVERE [http-apr-8080-exec-8] com.opensymphony.xwork2.util.logging. ...

  10. Java参数校验validation和validator区别

    Java参数校验validation和validator区别 1. 参数校验概述 2. validation与validator区别 3. validation注解说明 4. validator注解说 ...

最新文章

  1. unity test相关
  2. 如何挖掘医疗数据?看这份KDD2021《异构医疗数据挖掘》教程
  3. java uml图中的关系_UML类图中的关系
  4. GPU 加速下的图像处理
  5. Bzoj1269 [AHOI2006]文本编辑器editor
  6. 二进制包安装MySQL数据库
  7. python检查https过期_记录用certbot续签HTTPS时,python的pip源出现问题
  8. linux 添加本地源,linux 添加本地yum源
  9. Error: failed to unmarshal json. invalid character '\'' looking for beginning of value解决方案
  10. android之添加raw文件
  11. android如何去掉自动更新,如何停止Android手机上的应用程序自动更新
  12. 【TSP】基于matlab混合粒子群算法求解旅行商问题【含Matlab源码 397期】
  13. C语言位操作中的置0和置1
  14. 软件测试带宽低,性能测试分析之带宽瓶颈的疑惑
  15. Mysql设计层优化整理总结
  16. vue实现预览pdf组件(vue-pdf插件使用)
  17. ubuntu 终端显示英文,桌面环境显示中文方法
  18. U盘插上不显示解决方法
  19. Win10能联网,但右下角网络图标变成小地球,显示无Internet连接的解决办法
  20. HTTP与Web安全总结

热门文章

  1. 服务器返回的数据把标签转义为其它字符
  2. flex 左右布局_移动端开发常用布局:前端弹性布局总结
  3. Oracle的join默认为,oracle join用法
  4. oracle hibernate 自动创建表,自动创建表时,多了一张表hibernate_sequence,为什么?
  5. html css浮动标签,12种超酷HTML5 SVG和CSS3浮动标签效果
  6. 不恢复余数除法原理_《有余数的除法》教案
  7. 页面分享怎么知道通过哪条链接进来的_亚马逊Coupon怎么设置?亚马逊Coupon对获取流量有哪些帮助?...
  8. ORA-28002 密码过期解决方案
  9. Kotlin入门(2)让App开发变得更容易
  10. python包标准类型和动态导入模块和多态和反射和授权