1. 程式人生 > >使用Java、hibernate validator註解校驗入參,格式化出參(入參)

使用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

註解,告訴框架在執行業務程式碼之前,先處理入參類的校驗註解。如果校驗不通過(例:age輸入-1提交),則會丟擲異常,業務程式碼則不會執行;如果入參欄位值都校驗通過,則執行業務邏輯程式碼。

常用的入參校驗註解

@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>

推薦文章:

相關推薦

使用Javahibernate 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.2Hibernate註解方式實現一對多多對多關系

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