码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate Validation各注解的用法Demo

时间:2016-05-07 07:08:34      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:

  1. 依赖包
<dependency>
    <groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId> <version>5.1.1.Final</version> </dependency>

<dependency>
   <groupId>javax.el</groupId>
   <artifactId>javax.el-api</artifactId>
   <version>2.2.4</version>
</dependency>
<dependency>
   <groupId>org.glassfish.web</groupId>
   <artifactId>javax.el</artifactId>
   <version>2.2.4</version>
</dependency>

与spring整合的配置:
<!-- 配置 JSR303 Bean Validator 定义 -->
  <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
实体类属性上加注解约束
@NotNull(message="书籍的姓名不能为空!")
    public String getBookName() {
        return bookName;
    }

/**
     * 服务端参数有效性验证
     * @param object 验证的实体对象
     * @param groups 验证组
     * @return 验证成功:返回true;严重失败:将错误信息添加到 flash message 中
     */
    @SuppressWarnings("rawtypes") 
    public static void validateWithException(Validator validator, Object object, Class<?>... groups)
            throws ConstraintViolationException {
        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
        if (!constraintViolations.isEmpty()) {
            StringBuffer sb=new StringBuffer();
            for (ConstraintViolation constraintViolation : constraintViolations) {
                sb.append(constraintViolation.getMessage());
            }
            throw new RuntimeException(sb.toString());
            //throw new ConstraintViolationException(constraintViolations);
        }
    }


测试类方法:
@Test
    public void testSaveBook(){
        Book book=new Book();
        book.setBookPrice(100);
        book.setBookStock(10);
//        book.setBookName("norelax");
        validateWithException(validator, book);
        System.out.println(buyService.saveBook(10, null, 10));
    }
测试结果:
java.lang.RuntimeException: 书籍的姓名不能为空!
    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)




  1. Bean Validation 中内置的 constraint(约束)  
  2.    
  3. @Null   被注释的元素必须为 null  
  4. @NotNull    被注释的元素必须不为 null  
  5. @AssertTrue     被注释的元素必须为 true  
  6. @AssertFalse    被注释的元素必须为 false  
  7. @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值  
  8. @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值  
  9. @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值  
  10. @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值  
  11. @Size(max=, min=)   被注释的元素的大小必须在指定的范围内  
  12. @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内  
  13. @Past   被注释的元素必须是一个过去的日期  
  14. @Future     被注释的元素必须是一个将来的日期  
  15. @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式  
  16.   
  17. Hibernate Validator 附加的 constraint  
  18. @NotBlank(message =)   验证字符串非null,且长度必须大于0  
  19. @Email  被注释的元素必须是电子邮箱地址  
  20. @Length(min=,max=)  被注释的字符串的大小必须在指定的范围内  
  21. @NotEmpty   被注释的字符串的必须非空  
  22. @Range(min=,max=,message=)  被注释的元素必须在合适的范围内 

Hibernate Validation各注解的用法Demo

标签:

原文地址:http://blog.csdn.net/woshiwusonghaha/article/details/51332548

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!