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

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

Spring boot validation校驗方法實例

瀏覽:33日期: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久久,三上悠亚国产精品一区二区三区
国产高清一区二区| 精品一区二区三区亚洲| 久久91导航| 美女视频黄免费的久久| 国产欧美69| 久久精品三级| 91亚洲国产| 91精品韩国| 欧美.日韩.国产.一区.二区| 国内精品福利| 丝袜诱惑制服诱惑色一区在线观看| 伊人国产精品| 日韩精品久久久久久| 国产欧美69| 精品日韩在线| 久久精品国产亚洲夜色av网站| 欧美网站在线| 亚洲精品四区| 欧美日韩一区自拍| 国产在线不卡一区二区三区| 日韩欧美一区二区三区在线观看| 亚洲精品一二三区区别| 亚洲三级网址| 老司机精品视频在线播放| 免费一级欧美片在线观看网站| 精品视频自拍| 国产综合精品一区| 日韩专区视频网站| 欧美91在线|欧美| 四虎4545www国产精品 | 欧美一级网站| 国产日韩欧美三区| 日韩一区电影| 美国三级日本三级久久99| 欧美日本精品| 中文字幕成在线观看| 亚洲免费成人| 国产精品自在| 亚洲福利久久| 日本vs亚洲vs韩国一区三区二区| 免费看久久久| 欧美特黄一区| 国产精品777777在线播放| 久久精品官网| 日韩精品视频中文字幕| а√在线中文在线新版| 欧美日韩精品一本二本三本| 欧美日韩 国产精品| 欧美少妇精品| 中文不卡在线| 蜜臀久久精品| 欧美片网站免费| 免费久久精品| 精品亚洲自拍| 亚洲人www| 欧美成人基地| 日本va欧美va瓶| 99久久精品国产亚洲精品| 欧美一区免费| 激情久久久久久| 国产精品激情| 欧美午夜不卡影院在线观看完整版免费| 国产精品调教| 蜜臀av性久久久久蜜臀aⅴ四虎| 97精品中文字幕| 日韩国产欧美视频| 亚洲婷婷免费| 国产成人精品三级高清久久91| 一区二区亚洲视频| 日韩一区二区中文| 欧美亚洲色图校园春色| 欧美日韩视频| 91欧美国产| 日韩高清不卡一区二区| 91精品蜜臀一区二区三区在线 | 婷婷亚洲五月色综合| 国产精品日韩精品在线播放 | 日韩精品一区二区三区av| 亚洲爱爱视频| 精品黄色一级片| 亚洲精品动态| 激情综合网站| 日韩中文字幕高清在线观看| 欧美精品国产一区| 在线看片一区| 欧美日韩激情| 伊人久久在线| 国产一精品一av一免费爽爽| 在线亚洲观看| 亚洲国产专区校园欧美| 国产a亚洲精品| 国产精品美女午夜爽爽| 亚洲1区在线观看| 99热免费精品| 欧美在线观看视频一区| 丁香婷婷久久| 国产激情精品一区二区三区| 日韩极品在线观看| 香蕉久久国产| 亚洲欧美日韩高清在线| 天堂av在线| 国产资源在线观看入口av| 欧美另类中文字幕| 亚洲精品日韩久久| 男人的天堂亚洲一区| 亚洲特级毛片| 欧美午夜精彩| 精品亚洲美女网站| 亚洲伊人av| 高清一区二区三区| 国产高清日韩| 国产精品亚洲四区在线观看| 日本中文字幕视频一区| 蜜臀久久久99精品久久久久久| 国产一区清纯| 亚洲精品一区二区在线看| 国精品一区二区三区| 高清不卡亚洲| 黄色欧美在线| 日本一二区不卡| 91欧美在线| 亚洲黄色免费看| 成人精品天堂一区二区三区| 日本久久成人网| 亚洲电影在线| 黄色日韩精品| 国产美女一区| 蜜桃视频一区二区三区| 美女日韩在线中文字幕| 一区二区三区网站| 午夜久久av | 欧美日韩中文一区二区| 久久久777| 欧美一区二区三区激情视频 | 99久久婷婷| 尤物在线精品| 视频精品一区二区| 天堂久久av| 日韩一区网站| 欧美亚洲二区| 久久精品毛片| 久久精品123| 丝袜亚洲另类欧美| 日韩三级精品| 国产激情久久| 正在播放日韩精品| 国精品一区二区三区| 视频一区中文字幕| 88久久精品| 精品一区二区三区中文字幕 | 国产亚洲高清视频| 亚洲深夜福利在线观看| 国产探花一区二区| 精品国产不卡一区二区| 亚洲伦乱视频| 午夜亚洲精品| 国产精品videossex久久发布| 伊人久久av| 天堂av在线一区| 国产精品一区免费在线| 麻豆视频在线看| 久久国产精品毛片| 国产精品亚洲综合色区韩国| 亚洲精品一级二级| 亚洲色图综合| 国产精品.xx视频.xxtv| 日韩啪啪电影网| 亚洲综合中文| 精品国产99| 久久成人国产| 久久97久久97精品免视看秋霞| 欧美日韩一区二区综合| 亚洲性视频在线| 精品国产鲁一鲁****| 国产韩日影视精品| 欧美日韩一区二区三区四区在线观看 | 另类综合日韩欧美亚洲| 樱桃视频成人在线观看| 午夜亚洲福利在线老司机| 欧美激情一区| 亚洲欧美日韩精品一区二区| 欧美成人aaa| 午夜在线一区| 日本一二区不卡| 亚欧洲精品视频在线观看| yellow在线观看网址| 美国三级日本三级久久99| 国产一区二区三区不卡视频网站 | 在线成人动漫av| 国产麻豆一区二区三区精品视频| 999国产精品| 欧美亚洲免费| 国精品一区二区三区| 国产精品15p| 一区久久精品| 国产精品三p一区二区| 欧美日韩免费观看一区=区三区| 麻豆国产精品一区二区三区| 免费日韩视频| 久久蜜桃精品|