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:星期一,...},第二維是銷售時間
相關文章
相關標籤/搜索