java参数校验:ValidatorUtils校验框架工具类的使用
生活随笔
收集整理的這篇文章主要介紹了
java参数校验:ValidatorUtils校验框架工具类的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
🍅 作者主頁:Java李楊勇?
🍅 簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者🏆、【java李楊勇】公號作者? ?簡歷模板、學(xué)習(xí)資料、面試題庫【關(guān)注我,都給你】
在日常開發(fā)中經(jīng)常對參數(shù)進(jìn)行校驗、可以使用Validator,一般情況下用來驗證web前端頁面?zhèn)鬟^來的對象數(shù)據(jù)屬性 是否符合標(biāo)準(zhǔn)要求預(yù)期。
首先需要在需要校驗的java實(shí)體類中對需要校驗的對象屬性添加相關(guān)注解說明:
用戶對象舉例:
package com.railway.modules.sys.entity;import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.railway.common.validator.group.AddGroup; import com.railway.common.validator.group.UpdateGroup; import lombok.Data; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.util.Date; import java.util.List;/*** 系統(tǒng)用戶** @author lyy */ @Data @TableName("sys_user") public class SysUserEntity implements Serializable {private static final long serialVersionUID = 1L;/*** 用戶ID*/@TableIdprivate Long userId;/*** 用戶名*/@NotBlank(message="用戶名不能為空", groups = {AddGroup.class, UpdateGroup.class})private String username;/*** 密碼*/@NotBlank(message="密碼不能為空", groups = AddGroup.class)private String password;/*** 鹽*/private String salt;/*** 郵箱*/@NotBlank(message="郵箱不能為空", groups = {AddGroup.class, UpdateGroup.class})@Email(message="郵箱格式不正確", groups = {AddGroup.class, UpdateGroup.class})private String email;/*** 手機(jī)號*/private String mobile;/*** 狀態(tài) 0:禁用 1:正常*/private Integer status;/*** 角色I(xiàn)D列表*/@TableField(exist=false)private List<Long> roleIdList;/*** 創(chuàng)建者ID*/private Long createUserId;private String roleName;private String position;/*** 創(chuàng)建時間*/private Date createTime;}注解參數(shù)說明:
| @AssertFalse | Boolean,boolean | 驗證注解的元素值是false |
| @AssertTrue | Boolean,boolean | 驗證注解的元素值是true |
| @NotNull | 任意類型 | 驗證注解的元素值不是null |
| @Null | 任意類型 | 驗證注解的元素值是null |
| @Min(value=值) | BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存儲的是數(shù)字)子類型 | 驗證注解的元素值大于等于@Min指定的value值 |
| @Max(value=值) | 和@Min要求一樣 | 驗證注解的元素值小于等于@Max指定的value值 |
| @DecimalMin(value=值) | 和@Min要求一樣 | 驗證注解的元素值大于等于@ DecimalMin指定的value值 |
| @DecimalMax(value=值) | 和@Min要求一樣 | 驗證注解的元素值小于等于@ DecimalMax指定的value值 |
| @Digits(integer=整數(shù)位數(shù), fraction=小數(shù)位數(shù)) | 和@Min要求一樣 | 驗證注解的元素值的整數(shù)位數(shù)和小數(shù)位數(shù)上限 |
| @Size(min=下限, max=上限) | 字符串、Collection、Map、數(shù)組等 | 驗證注解的元素值的在min和max(包含)指定區(qū)間之內(nèi),如字符長度、集合大小 |
| @Past | java.util.Date,java.util.Calendar;Joda Time類庫的日期類型 | 驗證注解的元素值(日期類型)比當(dāng)前時間早 |
| @Future | 與@Past要求一樣 | 驗證注解的元素值(日期類型)比當(dāng)前時間晚 |
| @NotBlank | CharSequence子類型 | 驗證注解的元素值不為空(不為null、去除首位空格后長度為0),不同于@NotEmpty,@NotBlank只應(yīng)用于字符串且在比較時會去除字符串的首位空格 |
| @Length(min=下限, max=上限) | CharSequence子類型 | 驗證注解的元素值長度在min和max區(qū)間內(nèi) |
| @NotEmpty | CharSequence子類型、Collection、Map、數(shù)組 | 驗證注解的元素值不為null且不為空(字符串長度不為0、集合大小不為0) |
| @Range(min=最小值, max=最大值) | BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子類型和包裝類型 | 驗證注解的元素值在最小值和最大值之間 |
| @Email(regexp=正則表達(dá)式,flag=標(biāo)志的模式) | CharSequence子類型(如String) | 驗證注解的元素值是Email,也可以通過regexp和flag指定自定義的email格式 |
| @Pattern(regexp=正則表達(dá)式,flag=標(biāo)志的模式) | String,任何CharSequence的子類型 | 驗證注解的元素值與指定的正則表達(dá)式匹配 |
| @Valid | 任何非原子類型 | 指定遞歸驗證關(guān)聯(lián)的對象如用戶對象中有個地址對象屬性,如果想在驗證用戶對象時一起驗證地址對象的話,在地址對象上加@Valid注解即可級聯(lián)驗證 |
ValidatorUtils校驗類
/*** hibernate-validator校驗工具類** 參考文檔:http://docs.jboss.org/hibernate/validator/5.4/reference/en-US/html_single/** @author admin*/ public class ValidatorUtils {private static Validator validator;static {validator = Validation.buildDefaultValidatorFactory().getValidator();}/*** 校驗對象* @param object 待校驗對象* @param groups 待校驗的組* @throws RRException 校驗不通過,則報RRException異常*/public static void validateEntity(Object object, Class<?>... groups)throws RRException {Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);if (!constraintViolations.isEmpty()) {StringBuilder msg = new StringBuilder();for(ConstraintViolation<Object> constraint: constraintViolations){msg.append(constraint.getMessage()).append("<br>");}throw new RRException(msg.toString());}} }?Controller層使用:
/*** 保存用戶*/@PostMapping("/save")public R save(@RequestBody SysUserEntity user){ValidatorUtils.validateEntity(user, AddGroup.class);sysUserService.saveUser(user);return R.ok();}?源碼獲取:?
大家點(diǎn)贊、收藏、關(guān)注、評論啦 、查看👇🏻👇🏻👇🏻微信公眾號獲取聯(lián)系方式👇🏻👇🏻👇🏻
打卡 文章 更新 192/ ?365天
?精彩專欄推薦訂閱:在下方專欄👇🏻👇🏻👇🏻👇🏻
Java項目精品實(shí)戰(zhàn)案例《100套》
web前端期末大作業(yè)網(wǎng)頁實(shí)戰(zhàn)《100套》
總結(jié)
以上是生活随笔為你收集整理的java参数校验:ValidatorUtils校验框架工具类的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML+CSS+JS实现燃烧的火焰火花
- 下一篇: ❤️六W字《计算机基础知识》(四)(建议