hibernate Validator

hibernate Validator 是 Bean Validation 的参考实现 。Hibernate Validator 提供了 JSR 303 规范中全部内置 constraint 的实现,除此以外还有一些附加的 constraint。java

在平常开发中,Hibernate Validator常常用来验证bean的字段,基于注解,方便快捷高效。git

1. Bean Validation 中内置的 constraint正则表达式

           注解                                      做用算法

@Valid 被注释的元素是一个对象,须要检查此对象的全部字段值
@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(value) 被注释的元素必须符合指定的正则表达式

2. Hibernate Validator 附加的 constraint数组

注解 做用
@Email 被注释的元素必须是电子邮箱地址
@Length(min=, max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=, max=) 被注释的元素必须在合适的范围内
@NotBlank 被注释的字符串的必须非空
@URL(protocol=,
host=,    port=, 
regexp=, flags=)
被注释的字符串必须是一个有效的url

@CreditCardNumberurl

被注释的字符串必须经过Luhn校验算法,
银行卡,信用卡等号码通常都用Luhn
计算合法性
@ScriptAssert
(lang=, script=, alias=)
要有Java Scripting API 即JSR 223 
("Scripting for the JavaTM Platform")的实现
@SafeHtml
(whitelistType=, 
additionalTags=)
classpath中要有jsoup包

hibernate补充的注解中,最后3个不经常使用,可忽略。spa

主要区分下@NotNull  @NotEmpty  @NotBlank 3个注解的区别:.net

@NotNull           任何对象的value不能为nullhibernate

@NotEmpty       集合对象的元素不为0,即集合不为空,也能够用于字符串不为nullcode

@NotBlank        只能用于字符串不为null,而且字符串trim()之后length要大于0

 

示例:

@DecimalMin(value = "0.1",message = "价格大于0.1元")
    @NotNull(message = "current_price 为空")
    private Float current_price;   

    @Length(max = 14, message = "菜品名字小于15")
	@NotBlank(message = "菜品名为空")
	private String name;                         //菜品名 ,惟一

	@Length(max = 125, message = "第三方菜品id太长")
	@NotBlank(message = "第三方菜品id 为空")
	private String other_dish_id;              //第三方菜品id

	@Min(value = 100, message = "菜品id 为空")
	private Long dish_id;                //菜品id

	@Range(min = 0, max = 1, message = "same_open_time 值错误")
	@NotNull(message = "same_open_time 为 null")
	private Integer same_open_time;             //可售时间{1: 同接单时间,0:自定义时间,此时available_times可用}

	@Min(value = 1, message = "起订数大于1")
	@NotNull(message = "min_order_number 为 null")
	private Integer min_order_number = 1;          //起订数

	@Length(max = 299, message = "description 小于300")
	private String description;             //菜品描述

	private String           url;                         //图片地址

	@Range(min = 0, max = 1, message = "is_low_definition_img 值错误")
	private Integer is_low_definition_img;        //是否为低清图,0高清,1:低清(添加菜品时,该值为0)

	//新增必填字段
	@Size(min = 1, max = 1, message = "不能绑定多个分类")
	@NotEmpty(message = "dish_category_ids 为空")
	private Long[] dish_category_ids;         //菜品所属分类id

	@Valid
	@NotEmpty(message = "norms 为空")
	private List<BDFoodNorm> norms;                      //菜品规格

	@Range(min = 0, max = 5, message = "餐盒数在0-5之间")
	@NotNull(message = "餐盒数为空")
	private Integer box_number;                 //餐盒数   box_dish_number个菜品 box_number 个餐盒

	@Range(min = 1, max = 10, message = "菜品数在1-10之间")
	@NotNull(message = "菜品数为空")
	private Integer box_dish_number;            //菜品数  box_dish_number个菜品 box_number 个餐盒

    //新增可选字段
    // private BigInteger              id;                     //未知.. 通常为空
	@Valid
	@Size(max = 4,message = "菜品属性最多4条")
	private List<BDFoodAttr>        attr;                    //菜品属性

	private String                 gallery_img_id;            //图片库图片id
    /**
	 * 二维数组
	 * 	[0][周日]、[1][周一]、[2][周二]、[3][周三]、[4][周四]、[5][周五]、[6][周六]
	 */
	@NotNull(message = "available_times 为空")
    private DBFoodAvailableTime[][] available_times;       //可售时间,第一维是可售星期{0:星期日,1:星期一,...},第二维是销售时间
相关文章
相关标签/搜索