1. 转自:https://www.aliyun.com/jiaocheng/1315650.html
  1. <dependency>
  2. <groupId>org.hibernate</groupId>
  3. <artifactId>hibernate-validator</artifactId>
  4. <version>5.1.1.Final</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>javax.el</groupId>
  8. <artifactId>javax.el-api</artifactId>
  9. <version>2.2.4</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.glassfish.web</groupId>
  13. <artifactId>javax.el</artifactId>
  14. <version>2.2.4</version>
  15. </dependency>
与spring整合的配置:

  1. <!-- 配置 JSR303 Bean Validator 定义 -->
  2. <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

实体类属性上加注解约束
  1. @NotNull(message="书籍的姓名不能为空!")
  2. public String getBookName() {
  3. return bookName;
  4. }
[java] view plaincopy print?
  1. /**
  2. * 服务端参数有效性验证
  3. * @param object 验证的实体对象
  4. * @param groups 验证组
  5. * @return 验证成功:返回true;严重失败:将错误信息添加到 flash message 中
  6. */
  7. @SuppressWarnings("rawtypes")
  8. public static void validateWithException(Validator validator, Object object, Class<?>... groups)
  9. throws ConstraintViolationException {
  10. Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
  11. if (!constraintViolations.isEmpty()) {
  12. StringBuffer sb=new StringBuffer();
  13. for (ConstraintViolation constraintViolation : constraintViolations) {
  14. sb.append(constraintViolation.getMessage());
  15. }
  16. throw new RuntimeException(sb.toString());
  17. //throw new ConstraintViolationException(constraintViolations);
  18. }
  19. }
  20. 测试类方法:
  21. @Test
  22. public void testSaveBook(){
  23. Book book=new Book();
  24. book.setBookPrice(100);
  25. book.setBookStock(10);
  26. //        book.setBookName("norelax");
  27. validateWithException(validator, book);
  28. System.out.println(buyService.saveBook(10, null, 10));
  29. }
测试结果:
java.lang.RuntimeException: 书籍的姓名不能为空!
at com.relax.at com.relax.at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:670)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
  • Bean Validation 中内置的 constraint(约束)
  • @Null   被注释的元素必须为 null
  • @NotNull    被注释的元素必须不为 null
  • @AssertTrue     被注释的元素必须为 true
  • @AssertFalse    被注释的元素必须为 false
  • @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Size(max=, min=)   被注释的元素的大小必须在指定的范围内
  • @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Past   被注释的元素必须是一个过去的日期
  • @Future     被注释的元素必须是一个将来的日期
  • @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式
  • Hibernate Validator 附加的 constraint
  • @NotBlank(message =)   验证字符串非null,且长度必须大于0
  • @Email  被注释的元素必须是电子邮箱地址
  • @Length(min=,max=)  被注释的字符串的大小必须在指定的范围内
  • @NotEmpty   被注释的字符串的必须非空
  • @Range(min=,max=,message=)  被注释的元素必须在合适的范围内

Hibernate Validation与Spring整合各注解的用法Demo相关推荐

  1. shiro和Spring整合使用注解时没有执行realm的doGetAuthorizationInfo回调方法的解决

    shiro和Spring整合使用注解时没有执行realm的doGetAuthorizationInfo回调方法的解决 from :http://blog.csdn.net/babys/article/ ...

  2. Spring系列(九):Spring属性赋值注解@Value 用法介绍

    今天给大家分享Spring属性赋值注解@Value 用法,希望对大家能有所帮助! 1.@Value注解的作用 @Value注解的作用主要可以给属性直接赋值.也可以读取配置文件中的值给属性赋值 2.@V ...

  3. Spring整合Mybatis注解方式

    Spring整合Mybatis(注解方式) 目录 Spring整合Mybatis(注解方式) 环境准备 纯注解方式 配置类具体内容 测试类具体内容 环境准备 jar包: Spring所需依赖:spri ...

  4. spring的@Transactional注解详细用法

    概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型 ...

  5. SpringCloud学习笔记009---杂七杂八003:spring的@Transactional注解详细用法

    概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型 ...

  6. Hibernate Validation校验注解详解

    在前后端传递数据的时候,往往后端需要校验传递数据的格式,比如用户名的格式,密码是否为空.我们可以在service层编写代码判断,但是当我们在多处需要校验传递来的数据的时候,就会出现大量重复的代码,一旦 ...

  7. mybatis java类注解式_Spring整合Mybatis注解方式

    Spring整合Mybatis(注解方式) 环境准备 jar包: Spring所需依赖:spring-context.spring-aspects.aspectjrt.aspectjweaver.sp ...

  8. springmvc3.2+spring+hibernate4全注解方式整合(一)

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  9. Struts2、Hibernate、Spring整合所需要的jar包

    Struts2.Hibernate.Spring整合所需要的包: Struts2: struts2-core-2.0.14.jar  -- Struts2的核心包. commons-logging-1 ...

最新文章

  1. 软件测试培训分享:软件测试的职业发展方向有哪些
  2. AI量身定制:如何打造符合“中国特色教育”的内容推荐体系?
  3. 深入理解Lustre文件系统-第13篇 未来的工作
  4. 选择排序的思想及其实现
  5. access查询成绩小于5分_又一所大学公布成绩!5个人中有4人专业课130分以上,厉害了!...
  6. 加到service中无效_Dataway让SpringBoot不需要Controller、Service、DAO、Mapper
  7. bzoj1997 [HNOI2010]平面图判定Plana
  8. 线程的语法 (event,重要)
  9. 1894. 找到需要补充粉笔的学生编号
  10. mysql Slave is not configured or failed to initialize properly. You must at least set --server-id
  11. Linux namespace概述
  12. java如何关闭一个线程_如何关闭一个java线程池
  13. 交通灯c语言单片机课程设计,交通灯单片机课程设计C语言.doc
  14. 使用腾讯云服务器搭建自己网站应该怎么做
  15. 利用不蒜子统计网站的访问量
  16. Socket异步服务器,可以监控客户端的状态,功能有,文字测试,服务端向客户端传输屏幕录像(UDP传输)、监控客户端屏幕(UDP传输),抖动用户窗体、发送文件给用户、扫描客户的C盘目录。
  17. 正大国际:做外盘期货主帐户有什么风险?
  18. 熬夜整理的C/C++万字总结(一)
  19. json报错Exception in thread http-bio-8888-exec- java.lang.StackOverflowError
  20. 将本地图片转为url网络图片

热门文章

  1. 命名人工智能最高奖,破译德军密码,却被祖国逼得自杀-6月7日
  2. 系列文章丨AlphaGo Zero为何如此备受瞩目?8位教授的独家讲解
  3. GPT-3会做小学应用题了!60亿击败1750亿,并非参数越大越好
  4. 除了芯片,我们还应关注这六大核心技术!
  5. 前方高能!AI 大牛 LeCun 设想下一个新前沿:摈弃深度学习的所有概率技巧,改而掌握不断转变的能量值...
  6. 为什么技术进步让我们越来越焦虑不安?
  7. 麦肯锡AI应用报告:深度学习是蓝海还是深坑?
  8. 异构智能吴韧:物联网是“伪命题”?智联网才是未来
  9. 《自然》杂志:关于人类未来的工作,有三个最紧迫的问题
  10. 为什么 Python 会成为程序员害怕的编程语言?