当前位置: 首页>开发笔记>正文

SpringBoot 2 快速整合 | Hibernate Validator 數據校驗

SpringBoot 2 快速整合 | Hibernate Validator 數據校驗

概述

在開發RESTFull API 和普通的表單提交都需要對用戶提交的數據進行校驗,例如:用戶姓名不能為空,年齡必須大于0 等等。這里我們主要說的是后臺的校驗,在 SpringBoot 中我們可以通過使用 Hibernate Validator 來進行后臺的數據校驗的。

閑話少說!接下來就開始介紹如何使用 Hibernate Validator 來進行數據的校驗。

Hibernate Validator 實戰操作

我們在添加用戶的功能基礎上來進行改造。

用戶Model類代碼如下:

public class User {private String name;private Integer age;//省略get and set 方法
}

用戶Controller代碼如下:

   @RequestMapping(value = "",method = RequestMethod.POST)public void add(User user){log.info("添加用戶成功:"+"name:{},age:{}",user.getName(),user.getAge());}

第一步我們先在 User 類上添加校驗的注解,具體代碼如下:

public class User {@NotEmpty(message="請輸入您的名稱!")private String name;@Max(value = 100, message = "年齡必須在20-100之間!")@Min(value= 20 ,message= "年齡必須在20-100之間!" )private Integer age;..省略get 和set 方法
}

我們來大致說明一下 注解的含義:

  • 注解中message : 如果字段信息和檢驗規則不符合提示的錯誤信息。
  • 注解中的value: 表示字段信息限定的值。
  • @NotEmpty : 表示name 變量不能為空。
  • @Max: 表示年齡的最大值是多少。
  • @Min: 表示年齡的最小值是多少。

第二步就是對用戶添加方法進行改造

用戶添加方法中的 User 參數需要聲明 @Valid 注解,添加該注解主要是指定要校驗的參數實例,然后在添加用戶方法中添加 BindingResult 參數。
BindingResult:主要是存儲校驗結果的數據,我們可以通過 BindingResult 來判斷校驗是否通過和獲取校驗錯誤提示信息。

具體代碼如下:

  @PostMapping()public User add(@Valid User user,BindingResult bindingResult){if(bindingResult.hasErrors()) {String defaultMessage = bindingResult.getFieldError().getDefaultMessage();System.out.println(defaultMessage);return null;}log.info("springboot添加用戶成功:"+"name:{},age:{}",user.getName(),user.getAge());return user;}

測試:

這里測試使用的是谷歌的一個插件工具:Advanced REST client 來完成的,你也可以選擇你順手的工具進行測試。

測試用戶名稱為空的情況:
圖片
后臺日志輸出如下:
圖片
測試年齡不在20到100 的數據 :
圖片
后臺日志輸出如下:
圖片

Hibernate Validator詳細介紹

Hibernate Validator 是 實現JSR349的校驗框架,他默認提供已經定義好的校驗注解,我們經常使用的大致如下:

  • @NotNull: 校驗字段是否為空
  • @NotEmpty: 校驗數組集合map是否為空并且元素大于0
  • @Max(value=): 限定指端的最大值
  • @Min(value=): 限定字段的最小值
  • @Size(min=, max=): 校驗集合map元素數量的范圍
  • @Range(min=, max=): 校驗數組String或者數據區間范圍
  • @Email: 校驗字段是否是郵箱
  • @Past: 校驗是否是一個過期的日期
  • @NotBlank: 校驗字符串是否非空 即 !=null&& equals("")
  • @Valid: 聲明要校驗數據的類參數

https://www.zydui.com/afa88V28FBQ9WBFY.html
>

相关文章:

  • vscode搭建nodejs環境,關于VS code ESP-IDF 提示“loading ‘build.ninja‘: 系統找不到指定的文件” 的解決方案
  • 什么是應用軟件并舉例,16.應用舉例
  • 【面經】美團春招三輪面經分享~涵蓋眾多知識點
  • 2021年面試題目,面試題--新增
  • magic king怎么讀,magick++ 簡介
  • 微信怎么設置定時發送,朋友圈可以定時發送嗎?
  • can not connect to rpc service,RPC service
  • ftpserver安卓版,FTPServer
  • server u使用教程,Server-U
  • rpc服務器,RPC 和 Web Service 有什么區別?
  • rpc服務器,web service和rpc的區別
  • psexec
  • dhclient命令,hpe?3par命令行查看狀況腳本
  • hp存儲默認管理口地址,HP3par 多路徑存儲磁盤使用方法
  • hp3par命令行手冊,3par命令集
  • 存儲器芯片的地址范圍,存儲器芯片類別有哪些?
  • 在pc機中各類存儲器,1.14各類存儲器芯片
  • 存儲芯片漲價最新消息,存儲器芯片
  • Windows/Linux性能監控軟件>csv文件,方便生成圖表
  • sqlserver nvarchar,【SQL開發實戰技巧】系列(四十五):Oracle12C常用新特性?VARCHAR2/NVARCHAR2類型最大長度由40
  • arcgis怎么導入地圖,Arcgis路網導入3dmax批量改成道路面
  • 定義animal父類,定義一個父類Animal eat方法 , 定義兩個子類 Dog 特有方法keepHome , Cat 特有方法 catchMouse ;并
  • 手機連接兩個藍牙方法,打開藍牙的設置
  • iconfont圖標免費嗎,關于阿里矢量圖標彩色icon使用
  • ps制作賽博朋克風格,如何用ps做出賽博朋克的風格?
  • ue4綠幕實時導入場景,如何在UE4中制作賽博朋克LED效果
  • 產品經理有哪些培訓課程,2023年全國NPDP產品經理國際認證火熱招生啦
  • B端產品需要什么能力,NPDP認證|B端產品經理是如何做競品調研的?
  • 超級工具,Supershell 一款牛叉閃閃的工具
  • buffer在c語言中是什么意思,QBuffer 用法理解