日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring boot validation校驗方法實例

瀏覽:34日期:2023-03-24 16:57:21
前言

Spring boot validation校驗方法實例

接觸springboot一年多,是時候擺脫這種校驗方式了233 ,每個參數都if判斷,一眼看過去就是很low的程序員。

Validation有了這個插件就再也不用這樣去校驗參數了,可以讓我們在項目中不用浪費很多時間在參數校驗這里,從而更專注于業務邏輯

正文

首先引入依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

這里創建一個用戶的DTO對象

@Data@ApiModel('用戶-表單對象')public class SportsUserCreatForm{ @ApiModelProperty(value='用戶唯一標識',example = '0') @NotNull(groups = {Update.class}) private long id; @ApiModelProperty(value = '所屬機構唯一標識(冗余字段)', example = '0') private long organizationId; @ApiModelProperty('登錄用戶名') @NotBlank(message = '用戶名不能為空') @Length(max = 10, message = '用戶名最長為10位') private String loginName; @ApiModelProperty('密碼') private String password; @ApiModelProperty('手機號') private String phone; @ApiModelProperty('郵箱') private String email; @ApiModelProperty('性別( ’MALE’, ’FEMALE’ )') @NotNull(message = '用戶性別不能為空') private SportsUserEnumGender gander; @ApiModelProperty(value = '出生日期-13位時間戳',example = '0') private long birthday; @ApiModelProperty('身份證號') private String idNumber; @ApiModelProperty('用戶昵稱') private String nickname; }

在controller層添加@Validated注解,添加注解之后spring就會逐個校驗DTO中加了校驗注解的字段,完全通過才可以進入業務處理,否則就會拋出MethodArgumentNotValidException異常

@PostMapping('user/add') @RequiresAuthentication @ApiOperation('添加用戶') public SportsUser addUser(@Validated @RequestBody SportsUserCreatForm user) throws Exception{ return userBiz.addUser(user); }

一般項目來說拋出異常都會有約定好的JSON格式返回錯誤碼和錯誤信息,如果不處理就無法按照約定格式返回。這里我們可以通過聲明全局異常處理類來攔截異常并將異常處理成前端能操作的JSON數據。(這里只需要關注MethodArgumentNotValidException異常)

@Slf4j@Order(Ordered.HIGHEST_PRECEDENCE)@RestControllerAdvicepublic class GlobalExceptionAdvice { @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody public ResponseEntity<Object> handleBeanValidation(HttpServletResponse res, MethodArgumentNotValidException e) throws Exception{ res.setStatus(HttpStatus.OK.value()); List<ObjectError> errors = e.getBindingResult().getAllErrors(); ObjectError error = errors.get(0);// 如果有多個異常,這里只取第一個異常。沒有必要把所有異常都拋出(錯就是錯,第一個校驗都沒通過,自然也輪不到第二個校驗。) String json = JsonUtils.obj2json(error); Map map = JsonUtils.json2map(json); OkMessage result = new OkMessage(); result.setMsg('請求參數錯誤'e.getBindingResult().getFieldError().getDefaultMessage() + ']'); result.setCode('PARAM-000001'); return new ResponseEntity<>(result, HttpStatus.OK); }}分組校驗

有的人就要發問了,'啊,你這校驗不行啊,我在添加的時候id是自動生成的不需要校驗,編輯的時候就需要校驗id了,我是不是要建兩個一模一樣的DTO,這樣豈不是顯得我很憨?!這不是增加無用代碼嗎?差評!'

其實不然,在此我們可以用到 groups 屬性來解決此場景下的問題。

聲明分組

注意:在聲明分組的時候盡量繼承 extend javax.validation.groups.Default。 否則,在你聲明@Validated(Update.class)的時候,就會出現你在默認沒添加groups = {}的時候的校驗組@Email(message = '郵箱格式不對')不會自動校驗,因為默認的校驗組是groups = {Default.class}。

import javax.validation.groups.Default; /** * 數據新增分組 */public interface Create extends Default { }

import javax.validation.groups.Default; /** * 數據更新分組 */public interface Update extends Default { }

Spring boot validation校驗方法實例

修改Controller中的@Validated注解,聲明校驗分組(下面用的是Create.class所以并不會校驗id)

@PostMapping('user/add') @RequiresAuthentication @ApiOperation('添加用戶') public SportsUser addUser(@Validated(Create.class) @RequestBody SportsUserCreatForm user) throws Exception{ return userBiz.addUser(user); }下面附上注解說明 驗證注解 驗證的數據類型 說明 @AssertFalse Boolean,boolean 驗證注解的元素值是false @AssertTrue Boolean,boolean 驗證注解的元素值是true @NotNull 任意類型 驗證注解的元素值不是null @Null 任意類型 驗證注解的元素值是null @Min(value=值) BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存儲的是數字)子類型 驗證注解的元素值大于等于@Min指定的value值 @Max(value=值) 和@Min要求一樣 驗證注解的元素值小于等于@Max指定的value值 @DecimalMin(value=值) 和@Min要求一樣 驗證注解的元素值大于等于@ DecimalMin指定的value值 @DecimalMax(value=值) 和@Min要求一樣 驗證注解的元素值小于等于@ DecimalMax指定的value值 @Digits(integer=整數位數, fraction=小數位數) 和@Min要求一樣 驗證注解的元素值的整數位數和小數位數上限 @Size(min=下限, max=上限) 字符串、Collection、Map、數組等 驗證注解的元素值的在min和max(包含)指定區間之內,如字符長度、集合大小 @Past java.util.Date,java.util.Calendar;Joda Time類庫的日期類型 驗證注解的元素值(日期類型)比當前時間早 @Future 與@Past要求一樣 驗證注解的元素值(日期類型)比當前時間晚 @NotBlank CharSequence子類型 驗證注解的元素值不為空(不為null、去除首位空格后長度為0),不同于@NotEmpty,@NotBlank只應用于字符串且在比較時會去除字符串的首位空格 @Length(min=下限, max=上限) CharSequence子類型 驗證注解的元素值長度在min和max區間內 @NotEmpty CharSequence子類型、Collection、Map、數組 驗證注解的元素值不為null且不為空(字符串長度不為0、集合大小不為0) @Range(min=最小值, max=最大值) BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子類型和包裝類型 驗證注解的元素值在最小值和最大值之間 @Email(regexp=正則表達式,flag=標志的模式) CharSequence子類型(如String) 驗證注解的元素值是Email,也可以通過regexp和flag指定自定義的email格式 @Pattern(regexp=正則表達式,flag=標志的模式) String,任何CharSequence的子類型 驗證注解的元素值與指定的正則表達式匹配 @Valid 任何非原子類型 指定遞歸驗證關聯的對象如用戶對象中有個地址對象屬性,如果想在驗證用戶對象時一起驗證地址對象的話,在地址對象上加@Valid注解即可

此處只列出Hibernate Validator提供的大部分驗證約束注解,請參考hibernate validator官方文檔了解其他驗證約束注解和進行自定義的驗證約束注解定義。

常用的幾個:1.@NotNull:不能為null,但可以為empty('',' ',' ')2.@NotEmpty:不能為null,而且長度必須大于0 (' ',' ')3.@NotBlank:只能作用在String上,不能為null,而且調用trim()后,長度必須大于0('test') 即:必須有實際字符總結

到此這篇關于Spring boot validation校驗的文章就介紹到這了,更多相關Springboot validation校驗內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品jk白丝蜜臀av小说| 亚洲风情在线资源| 午夜久久免费观看| 在线国产一区二区| 视频在线观看91| 日韩综合一区二区三区| 欧美日韩xxxx| 国产精品久久777777毛茸茸| 久久久久久亚洲精品美女| 麻豆视频在线看| 中文字幕成在线观看| 日本激情一区| 一区三区视频| 欧美一级久久| 丁香婷婷久久| japanese国产精品| 欧美少妇精品| 日韩制服丝袜先锋影音| 欧美日韩91| 日韩在线中文| 人人爽香蕉精品| 国产精品亚洲二区| 久久婷婷激情| 日欧美一区二区| 神马久久午夜| 亚洲在线免费| 国产精品一区二区美女视频免费看| 成人午夜在线| 天堂成人免费av电影一区| 国产调教一区二区三区| 国产91欧美| 蜜臀久久99精品久久久久久9| 国产精品久久久久久久久久久久久久久 | 久久久精品区| 国产精品成人3p一区二区三区| 亚洲天堂av影院| 日韩专区欧美专区| 麻豆视频在线看| 四虎国产精品免费久久| 超级白嫩亚洲国产第一| 99热免费精品| 久久精品日韩欧美| 综合激情网站| 日本精品在线中文字幕| 日本色综合中文字幕| 国产精品伦理久久久久久| 夜夜嗨一区二区三区| 久久超级碰碰| 在线看片日韩| 欧美日韩色图| 国产福利亚洲| 日韩一区二区三区在线看| 综合日韩av| 国产精品伦一区二区| 在线一区欧美| 欧美gv在线| 欧美激情综合| 精品国产乱码久久久| 亚洲a成人v| 日韩一级精品| 中文字幕人成乱码在线观看| 日韩精品视频网| 老司机免费视频一区二区| 亚洲日韩视频| 在线日韩欧美| 丁香婷婷久久| 你懂的国产精品| 日韩精品亚洲aⅴ在线影院| 久久国产影院| 精品三级国产| 国产日韩欧美三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲电影有码| 伊人久久视频| 国产成人精选| 国产黄色精品| 青青草伊人久久| 亚洲v天堂v手机在线| 视频一区二区中文字幕| 中文在线不卡| 9久re热视频在线精品| 红桃视频亚洲| 欧美日韩国产综合网| 久久中文字幕av| 亚洲va在线| 少妇精品久久久一区二区三区| 先锋亚洲精品| 一本色道精品久久一区二区三区| 色婷婷久久久| 女生影院久久| 欧美影院视频| 国产一精品一av一免费爽爽| 日本电影久久久| 日韩三级精品| 欧美精品三级在线| 欧美亚洲福利| 国产精品1区| 精品久久视频| 中文一区一区三区高中清不卡免费| 精品视频亚洲| 黄色在线观看www| 欧美激情国产在线| 亚洲黄色免费看| 久久婷婷av| 亚洲综合电影一区二区三区| 欧美资源在线| 丝瓜av网站精品一区二区| 日韩在线一二三区| 亚洲理论在线| 日韩av三区| 久久99青青| 午夜久久中文| 日韩网站在线| 亚洲精品在线二区| 国产欧美高清| 国产成人精品一区二区免费看京| 亚洲伦乱视频| 丝瓜av网站精品一区二区| 日韩成人av影视| 精品国产不卡一区二区| 亚洲v在线看| 视频一区免费在线观看| 国产欧美日韩影院| 日韩免费看片| 丝袜亚洲另类欧美| 国产日产高清欧美一区二区三区| 精品一区二区三区四区五区| 日本国产精品| 中文字幕日本一区二区| 国产精品视频一区视频二区| 国产成人精品福利| 亚洲调教视频在线观看| 亚洲精品日本| 老司机免费视频一区二区| 国产精品av一区二区| 日韩一区二区三区免费视频| 国产日产一区| 亚洲调教视频在线观看| 日本国产欧美| 九色porny丨国产首页在线| 三级亚洲高清视频| 国产成人精品一区二区免费看京| 波多野结衣一区| 日韩av一区二区三区四区| 中文字幕在线视频久| 综合一区av| 久久一区二区三区电影| 日韩影片在线观看| 欧美成人基地| 国产乱码精品一区二区三区四区 | 免费看日韩精品| 免费一级欧美在线观看视频| 国产91精品对白在线播放| 日本不卡一区二区| 久久婷婷av| 久久超碰99| 一区二区亚洲视频| 欧美一区久久久| 久久国产精品色av免费看| 今天的高清视频免费播放成人| 国产精品草草| 免费观看在线综合色| 欧美精品资源| 国产精品密蕾丝视频下载| 国产一区二区精品| 91视频一区| 国产精品一区二区中文字幕| 亚洲一区二区成人| 日韩成人高清| 久久字幕精品一区| 日本成人中文字幕| 亚洲一区二区三区四区五区午夜| 国产精品亚洲二区| 亚洲精品日本| 视频一区中文| 91亚洲国产成人久久精品| 欧美片网站免费| 男人的天堂亚洲一区| 日韩精品2区| 麻豆久久久久久久| 日本aⅴ亚洲精品中文乱码| 欧美中文日韩| 日韩视频一区| 亚洲国产日韩欧美在线| 日韩欧美午夜| 福利视频一区| 国产精品一区二区三区av| 亚洲精品日韩久久| 综合激情在线| 蜜臀av在线播放一区二区三区| 国产国产精品| 国产一区观看| 国产99久久| 欧美成人精品三级网站| 国产在线观看91一区二区三区| 国产精品一区亚洲| 国产精品片aa在线观看 | 欧美精品日日操| 天堂中文av在线资源库| 国产成人精选|