文档章节

hibernate Validator

C
 Canaan_
发布于 2017/03/20 16:33
字数 1080
阅读 14
收藏 0

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

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

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

@CreditCardNumber

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

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

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

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

@NotEmpty       集合对象的元素不为0,即集合不为空,也可以用于字符串不为null

@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:星期一,...},第二维是销售时间

 

© 著作权归作者所有

上一篇: httpclient 使用
下一篇: Hibernate 笔记
C
粉丝 21
博文 404
码字总数 164737
作品 0
福州
私信 提问
Hibernate Validator 6.0.0.Alpha2 改进对 Bean Validation 2.0 的支持

Hibernate Validator 6.0.0.Alpha2 发布了。Hibernate Validator 6 将成为 Bean Validation 2.0 的参考实现。此 Alpha2 版本与 Bean Validation 规范的 2.0.0.Alpha2 版本协调。 请注意,Hib......

局长
2017/03/31
981
3
Hibernate Validator 5.3.2 发布

Hibernate Validator 5.3.2 发布了。 Hibernate Validator 就是用 Annotations 给类或者类的属性加上约束(constraint)的一个框架。该框架是十分容易的操作。Validator 是一个验证框架 不需要...

淡漠悠然
2016/11/14
1K
2
Hibernate Validator 5.2.0.Beta1 发布

Hibernate Validator 5.2.0.Beta1 发布,此版本解决了 30 个 issues,值得关注的新特性: Ability to provide external ClassLoader Hibernate Validator features.xml for Apache Karaf Pr......

叶秀兰
2015/02/28
802
1
Hibernate Validator 5.1.0.CR1 发布

Hibernate Validator 5.1.0.CR1 发布,此版本离最终版本又更近了一步,包括了一些调整和 bug 修复: addressed issues with the CDI integration (HV-858) EL message interpolation (HV-83...

NinjaSquid
2014/02/19
1K
0
Hibernate Validator 5.4.0.Final 发布,Bean 验证框架

Hibernate Validator 5.4.0.Final 发布了。 用 Annotations 给类或者类的属性加上约束(constraint),在运行期检查属性值是很优雅的。Hibernate Validator 就是这样一个验证框架,不需要和 Hi...

王练
2017/02/03
979
1

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
28分钟前
2
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
29分钟前
2
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
32分钟前
3
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
33分钟前
3
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
41分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部