使用Java、hibernate validator註解校驗入參,格式化出參(入參)
在專案執行真正業務程式碼前,一般都需要對於前端的入參值進行一輪的判斷,而一般的做法是寫if語句進行值的判斷,如下例子
public boolean insertOneUser(String name, int age) { if (name == null || name == "") { System.out.println("請輸入名稱"); return false; } if (age < 0) { System.out.println("年齡不能低於0"); return false; } System.out.println("執行插入sql"); return true; }
對於此例子,我們真正的業務是要插入一個使用者記錄;而當前在執行插入之前,使用了兩個if語句進行入參值的判斷,導致校驗程式碼行遠大於真正的業務程式碼行。對於入參值,建議使用java註解的方式進行校驗。
把name,age提取到一個入參類InsertOneUserPO裡面(省略欄位get,set方法)
public class InsertOneUserPO { @NotBlank(message = "請輸入名稱") private String name; @Min(message = "年齡不能低於0", value = 0) @NotNull(message = "請輸入年齡") private Integer age; }
name欄位加hibernate.validator包下面的@NotBlank做字串非空判斷;age欄位加javax.validation包下面的@Min以及@NotNull校驗入參值非空以及最小值判斷
此時業務程式碼就能夠專心做真正的業務操作了
public boolean insertOneUser(@Valid InsertOneUserPO po) {
System.out.println("執行插入sql");
return true;
}
注:框架預設不對入參類的校驗註解進行處理,需要在入參類錢加入javax.validation包下面的@Valid
常用的入參校驗註解
@NotNull (空物件null)
@NotBlank (空字串)
@Min (最小數值)
@Max (最大數值)
@Length (字元長度)
@Pattern (正則表示式)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") (前端傳yyyy-MM-dd HH:mm:ss標準時間格式轉Date型別)
@Email(message = "郵箱格式不正確", regexp = "^[\\.a-zA-Z0-9_-][email protected][a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$")
@Size (容器大小,適用於陣列,集合物件)
hibernate-validator Maven引用
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>
推薦文章:
相關推薦
使用Java、hibernate validator註解校驗入參,格式化出參(入參)
在專案執行真正業務程式碼前,一般都需要對於前端的入參值進行一輪的判斷,而一般的做法是寫if語句進行值的判斷,如下例子 public boolean insertOneUser(String name, int age) { if (name == null || n
java @Target 自定義註解 校驗引數是否為空
第一步自定義類 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; impor
【資料異常校驗】格拉布斯準則(Grubbs Criterion)處理資料異常
簡介 Grubbs測試(以1950年發表測試的Frank E. Grubbs命名),也稱為最大歸一化殘差測試或極端學生化偏差測試,是一種統計測試,用於檢測假設的單變數資料集中的異常值來自正常分佈的人口。 定義 格拉布斯的測試基於正態假設。也就是說,在應用Grubbs
JSR303(hibernate-validator)自定義註解校驗
自定義註解校驗 以校驗手機號為例,自定義 @IsPhone來驗證是否是手機號: 編寫註解: //說明該註解將被包含在javadoc中 @Documented // 註解的作用目標 類上、方法上、屬性上 @Target({ElementType.FIELD,
SpringBoot 的 Validator 的註解校驗
@null 驗證物件是否為空 @notnull 驗證物件是否為非空 @asserttrue  
Hibernate Validation自定義註解校驗
權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/cccmercy/article/details/79105624 情景:需要對String型別的屬性比如description進行驗證,驗證規則是當descript
Java 註解校驗
石上 記錄、分享 java bean validation 引數驗證 一、前言 二、幾種解決方案 三、使用bean validation 自帶的註解驗證 四、自定義bean validation 註解驗證 一、前言 在後臺開發過程中,對引數的校驗成為開發環境不可缺少的一個
java使用註解校驗物件屬性值資料長度
開發過程由於經常需要組報文,按一定的協議組成互動資料,報文的資料由多個引數組成,且引數的長度基本都有固定的長度,然後有些協議的引數個數可能達到幾十個之多,為了保障資料的完整性,同時又不做if(data.length())這樣大量的體力活,這裡介紹一種使用註解來完成這個校驗的動作。 定
JQuery中內容操作函數、validation表單校驗
調用方法 scrip 註意 語言 rul asc javascrip 最前面插入 獲取 JQuery:內容體拼接(可以直接拼接元素節點和內容節點) JQuery實現: 方案1:A.append(B); == B.appendTo(A);A的後面拼接B
JAVAEE——struts2_04:自定義攔截器、struts2標簽、登陸功能和校驗登陸攔截器的實現
strac htm logs transacti 標識 area 返回 ftw jsp 一、自定義攔截器 1.架構 2.攔截器創建 //攔截器:第一種創建方式 //攔截器生命周期:隨項目的啟動而創建,隨項目關閉而銷毀 public class MyInt
Java正則表達式校驗
import pri span 表達式 校驗 適用於 [] pub port 1 package com.study.string; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pat
2.2、Hibernate用註解方式實現一對多、多對多關系
tab 技術部 employee join incr 無法運行 hset strategy urn 一、一對多關系 1、在上一篇日誌中用.xml配置文件項目基礎上,再往lib目錄先添加一個包-hibernate-jpa-2.0-api-1.0.0.Final.jar
springboot~為Money類型添加最大值和最小值的註解校驗
status ret 大於 public http money string uil lin 在spring框架裏,為我們集成了很多校驗註解,直接在字段上添加對應的註解即可,這些註解基本都是簡單保留類型的,即int,long,float,double,String等,而如果
hibernate自定義校驗Valid
ati validator display struct xtend http gif img inter 步驟: 1.定義註解: import javax.validation.Constraint; import javax.validation.Payload;
springboot自定義註解校驗時出現的異常
異常資訊: javax.validation.ConstraintDefinitionException: HV000074 原因: 在約束註釋中它是關於groups()和payload()缺失的,只需新增這兩行就可以了: Class<?>[] groups() de
Java應用中的資料校驗
翻譯:吳嘉俊 ,叩丁狼高階講師。 [譯者注:這篇文章是開源專案CUBA Platform的作者,在這篇文章中,作者闡述了CUBA平臺中關於資料校驗的設計思想和使用方式,可以作為大家在設計資料校驗方面一個比較好的參考。] 我接觸到的很多專案中,對資料校驗這方面內容都
Spring Boot系列-使用自定義註解校驗使用者是否登入
摘要: 記得今年年初剛開始面試的時候,被問的最多的就是你知道Spring的兩大核心嘛?那你說說什麼是AOP,什麼是IOC?我相信你可能也被問了很多次了。 1、到底是什麼是AOP? 所謂AOP也就是面向切面程式設計,能夠讓我們在不影響原有業務功能的前提下,橫切擴充套件新的功能。 記得今年
java與js非空校驗
java與js非空校驗的使用 java import org.springframework.util.StringUtils; public class StringUtil { /** * 判斷字串是否為空 */ public static boolean
SpringBoot系列之使用自定義註解校驗使用者是否登入
記得今年年初剛開始面試的時候,被問的最多的就是你知道Spring的兩大核心嘛?那你說說什麼是AOP,什麼是IOC?我相信你可能也被問了很多次了。 1、到底是什麼是AOP? 所謂AOP也就是面向切面程式設計,能夠讓我們在不影響原有業務功能的前提下,橫切擴充套件新的功能。這裡面有一個比較顯眼的詞
java 程式碼實現身份證合法性校驗(全國所有地方)
很多地方可能都會用到對身份證要進行判斷校驗的功能,這個是之前在網上看到的,具體的網址都忘了,現在專案完成了,有時間把其整理下,方便自己和大家日後使用!(直接複製貼上即可) package org.asyware.insurance.util; import java.te