一、什么是Hibernate Validator(效验/验证)
在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,如果我们直接将这些校验写死在代码里,将会遇到这种现象: 1. 验证代码繁琐,重复劳动 2. 方法内代码显得冗长 3. 代码可读性不高
所以,我们可以使用hibernate validator来对字段的校验工作统一完成。
二、项目集成注意事项
在项目中hibernate-Validator包在spring-boot-starter-web包里面有,不需要重复引用 。
三、常用注解
validator内置注解
注解
详细信息
@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)
被注释的元素必须符合指定的正则表达式
Hibernate Validator 附加的 constraint
注解
详细信息
@Email
被注释的元素必须是电子邮箱地址
@Length
被注释的字符串的大小必须在指定的范围内
@NotEmpty
被注释的字符串的必须非空
@Range
被注释的元素必须在合适的范围内
@NotBlank
验证字符串非null,且长度必须大于0
注意:
@NotNull 适用于任何类型被注解的元素必须不能与NULL
@NotEmpty 适用于String Map或者数组不能为Null且长度必须大于0
@NotBlank 只能用于String上面 不能为null,调用trim()后,长度必须大于0
四、使用案例
import com.shida.api.baseData.validatorUtils.IsMobile;
import org.hibernate.validator.constraints.Length;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
public class AccountVO implements Serializable {
/**
* 手机号
*/
@IsMobile
private String account;
/**
* 密码
*/
@NotNull
@Length(min = 1 , max = 6 , message = "密码不能为空且长度需要在1和6之间")
private String password;
/**
* 账户状态
*/
@NotNull(message = "账号状态不能为空")
private Integer status;
/**
* 账户扩展信息
*/
@Valid
private UserInfoVO userInfoVO;
public String getAccount() {return account;}
public void setAccount(String account) {this.account = account;}
public String getPassword() {return password;}
public void setPassword(String password) {this.password = password;}
public Integer getStatus() {return status;}
public void setStatus(Integer status) { this.status = status;}
public UserInfoVO getUserInfoVO() {return userInfoVO;}
public void setUserInfoVO(UserInfoVO userInfoVO) {this.userInfoVO = userInfoVO;}
}
package com.shida.account.center.controller;
import com.base.data.common.message.MessageVo;
import com.base.data.common.message.StatusCode;
import com.shida.account.center.service.IAccountService;
import com.shida.api.baseData.model.AccountVO;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
@RestController
@Validated
@RequestMapping("/data/account")
public class AccountController {
@Resource
private IAccountService accountService;
/**
* 添加账户
* @param accountVO
* @return
*/
@PostMapping(value = "/add")
public MessageVo addAccount(@Valid @RequestBody AccountVO accountVO){
MessageVo message = new MessageVo();
accountService.addAccount(accountVO);
message.setCode(StatusCode.success);
message.setMsg("账户添加成功");
message.setResult(accountVO);
return message;
}
}
最后修改于 2020-08-27 11:02:55
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

