zoukankan      html  css  js  c++  java
  • 校验类注解的区别 @NotNull、@NotEmpty、@NotBlank

    校验类注解的区别 @NotNull、@NotEmpty、@NotBlank

    使用场景

    • @NotEmpty用在集合类
    • @NotBlank 用在String
    • @NotNull 用在基本类型

    注解的探究

    @NotEmpty

    /**
     * The annotated element must not be {@code null} nor empty.
     * <p>
     * Supported types are:
     * <ul>
     * <li>{@code CharSequence} (length of character sequence is evaluated)</li>
     * <li>{@code Collection} (collection size is evaluated)</li>
     * <li>{@code Map} (map size is evaluated)</li>
     * <li>Array (array length is evaluated)</li>
     * </ul>
     *
     * @author Emmanuel Bernard
     * @author Hardy Ferentschik
     *
     * @since 2.0
     */
    @Documented
    @Constraint(validatedBy = { })
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    @Retention(RUNTIME)
    @Repeatable(List.class)
    public @interface NotEmpty {
    
    	String message() default "{javax.validation.constraints.NotEmpty.message}";
    
    	Class<?>[] groups() default { };
    
    	Class<? extends Payload>[] payload() default { };
    
    	/**
    	 * Defines several {@code @NotEmpty} constraints on the same element.
    	 *
    	 * @see NotEmpty
    	 */
    	@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    	@Retention(RUNTIME)
    	@Documented
    	public @interface List {
    		NotEmpty[] value();
    	}
    }
    

    @NotEmpty的String类、Collection、Map、数组,是不能为null并且长度必须大于0的(String、Collection、Map的isEmpty()方法)。

    @NotBlank

    /**
     * The annotated element must not be {@code null} and must contain at least one
     * non-whitespace character. Accepts {@code CharSequence}.
     *
     * @author Hardy Ferentschik
     * @since 2.0
     *
     * @see Character#isWhitespace(char)
     */
    @Documented
    @Constraint(validatedBy = { })
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    @Retention(RUNTIME)
    @Repeatable(List.class)
    public @interface NotBlank {
    
    	String message() default "{javax.validation.constraints.NotBlank.message}";
    
    	Class<?>[] groups() default { };
    
    	Class<? extends Payload>[] payload() default { };
    
    	/**
    	 * Defines several {@code @NotBlank} constraints on the same element.
    	 *
    	 * @see NotBlank
    	 */
    	@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    	@Retention(RUNTIME)
    	@Documented
    	public @interface List {
    		NotBlank[] value();
    	}
    }
    
    

    @NotBlank用于String,只能作用在String上,不能为null,而且调用trim()后,长度必须大于0。

    @NotNull

    /**
     * The annotated element must not be {@code null}.
     * Accepts any type.
     *
     * @author Emmanuel Bernard
     */
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    @Retention(RUNTIME)
    @Repeatable(List.class)
    @Documented
    @Constraint(validatedBy = { })
    public @interface NotNull {
    
    	String message() default "{javax.validation.constraints.NotNull.message}";
    
    	Class<?>[] groups() default { };
    
    	Class<? extends Payload>[] payload() default { };
    
    	/**
    	 * Defines several {@link NotNull} annotations on the same element.
    	 *
    	 * @see javax.validation.constraints.NotNull
    	 */
    	@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    	@Retention(RUNTIME)
    	@Documented
    	@interface List {
    
    		NotNull[] value();
    	}
    }
    
    

    接受任何类型,要求非空

    常用注解示例

    String

    @NotBlank(message = "姓名不能为空!")
    @Length(min = 2, max = 10, message = "姓名的长度只能在{min}到{max}之间!")
    @Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\d{8})$", message = "手机号格式不正确")
    

    CLC

  • 相关阅读:
    git的使用
    模块化的 require 和 import的区别
    Javascript模块化编程(二)commonJS规范和AMD规范
    Javascript模块化编程(三):require.js的用法
    SQL精华语句
    Convert sql 函数格式
    sql分页存储过程(汇总)
    jira和svn结合
    使用Java Service Wrapper 把Java程序作为Windows系统服务
    Eclipse使用技巧
  • 原文地址:https://www.cnblogs.com/chenglc/p/14423000.html
Copyright © 2011-2022 走看看