hibernate自定義校驗器使用(字段在in范圍之內)

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

1.自定義注解類DigitsMustIn

@Constraint(validatedBy = DigitsMustInValidator.class) //具體的實現
@Target({java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.FIELD})
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Documented
public @interface DigitsMustIn {String message() default "{}不需在[{}]中"; //提示信息,可以寫死,可以填寫國際化的keyint[] inArr();//下面這兩個屬性必須添加Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}

2.實現DigitsMustInValidator校驗服務

public class DigitsMustInValidator implements ConstraintValidator<DigitsMustIn, Integer> {Integer[] ints;@Overridepublic void initialize(DigitsMustIn constraintAnnotation) {int[] ints = constraintAnnotation.inArr();this.ints = ArrayUtils.toObject(ints);}@Overridepublic boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {if (ArrayUtils.contains(ints, integer)) {return true;}constraintValidatorContext.disableDefaultConstraintViolation();//禁用默認的message的值//重新添加錯誤提示語句constraintValidatorContext.buildConstraintViolationWithTemplate("["+integer+"]" + "必須在" + Arrays.toString(ints) + "之內").addConstraintViolation();return false;}
}

3.在需要校驗的字段上加自定義注解

@DigitsMustIn(inArr = {7, 8, 18})
private Integer sourceType;

4.驗證

private void validate(Object validateObj) throws WMS3CheckedException {for (ConstraintViolation<Object> constraintViolation : Validation.buildDefaultValidatorFactory().getValidator().validate(validateObj)) {throw new WMS3CheckedException(WMS3ExceptionCode.UNKNOW_EXCEPTON.getCode(),constraintViolation.getPropertyPath() + constraintViolation.getMessage());}
}

轉載于:https://my.oschina.net/u/2485283/blog/1859311

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282727.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282727.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282727.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sql將html轉成excel,使用SQL*PLUS,構建完美excel或html輸出

通過SQL*PLUS我們可以構建友好的輸出&#xff0c;滿足多樣化用戶需求。本例通過簡單示例&#xff0c;介紹通過sql*plus輸出xls&#xff0c;html兩種格式文件.首先創建兩個腳本:1.main.sql用以設置環境&#xff0c;調用具體功能腳本2.功能腳本-get_tables.sql為實現具體功能之腳…

[cogs347]地震

COGS&#xff1a;地震&#xff08;平衡樹&#xff09; COGS上一道題。。。文件名是equake 還是又打了一遍板子。。。 加個lazy標記就行了。。。 注意查詢時先下傳標記&#xff08;lazy&#xff09; // It is made by XZZ #include<cstdio> #include<algorithm> #de…

第八課-第二講 08_02_bash腳本編程之七 case語句及腳本選項進階

第八課-第二講 08_02_bash腳本編程之七 case語句及腳本選項進階 一. 面向過程控制結構順序結構選擇結構循環結構選擇結構if語句 單分支&#xff0c;雙分支&#xff0c;多分支case 語句 case語句:選擇結構 case SWITCH invalue1)---此處的value是當做字符來比較的statement....…

html表單提交按鈕怎么居中,與表單框一致,居中提交按鈕_html_開發99編程知識庫...

我嘗試將提交按鈕與表單的一個條目對齊失敗。 我只是希望提交按鈕稍微定位到窗體框的右側和中心。 現在是右邊&#xff0c;但在盒子的底部。我試圖回答相似的查詢&#xff0c;對於提交按鈕( 浮點&#xff0c;margin 等等 )&#xff0c;但是我不能找到正確的選擇。我的HTML如下所…

一個簡單的WebService服務

現在&#xff0c;網上提供的免費的webservice服務的網站&#xff1a; http://www.webxml.com.cn/從擴展名上看&#xff0c;是 .net構建的網站。看看功能的實現效果&#xff1a;需求&#xff1a;我們要遠程調用手機號歸屬地的查詢&#xff1a;開發步驟&#xff1a; 1&#xff0e…

Linux中的vi和vim

一、vi與vim的概念和區別 概念: 它們都是多模式編輯器&#xff0c;不同的是vim 是vi的升級版本&#xff0c;它不僅兼容vi的所有指令&#xff0c;而且還有一些新的特性在里面。 vim優勢主要體現在一下幾方面: 1、多級撤消 我們知道在vi里&#xff0c;按 u只能撤消上次命令&a…

[工具分享]備份SSAS模型TMSL腳本元數據工具,多給自己一點后悔藥可吃。

筆者在2019年分享過自己寫的一個小工具&#xff0c;用于備份Sqlserver數據庫的元數據。近期在一個PowerBI項目中&#xff0c;發現很有必要也備份下SSAS分析模型的元數據&#xff0c;防止不小心服務器壞了或使用Tabular Editor連接數據庫方式開發過程中&#xff0c;不小心覆蓋了…

UVA - 11181 數學

UVA - 11181 題意&#xff1a; n個人去買東西&#xff0c;其中第i個人買東西的概率是p[i],最后只有r個人買了東西&#xff0c;求每個人實際買了東西的概率 代碼&#xff1a; //在r個人買東西的概率下每個人買了東西的概率&#xff0c;這是條件概率&#xff0c;因為最多20個人可…

js時間戳轉成日期格式

//第一種2 function getLocalTime(nS) { 3 return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/, ); 4 } 5 alert(getLocalTime(1293072805));6 //結果是2010年12月23日 10:537 //第二種 8 function getLocalTime(nS) { 9 r…

計算機桌面去方格子,win7桌面office圖標變成白色方格圖標的原因和解法

win7系統開機發現桌面上所有office圖標變成白色方格圖標&#xff0c;其他程序圖標都正常顯示&#xff0c;是怎么回事呢&#xff1f;出現這樣的情況&#xff0c;一般是由于文件圖標緩存錯誤或者丟失導致&#xff0c;找打原因后該如何解決問題&#xff1f;可以通過記事本來解決此…

JS獲取元素的offsetTop,offsetLeft等相關屬性

1. obj.clientWidth //獲取元素的寬度 obj.clientHeight //元素的高度 obj.offsetLeft //元素相對于父元素的left obj.offsetTop //元素相對于父元素的top obj.offsetWidth //元素的寬度 obj.offsetHeight //元素的高度 區別&#xff1a; clientWidth width padding clientHe…

vi/vim 三種模式及命令 (簡單粗暴,輕松搞懂)

//一般模式(默認模式) 一般模式&#xff1a; 移動光標 h 或 向左方向鍵 光標向左移動一個字符 j 或 向下方向鍵 光標向下移動一個字符 k 或 向上方向鍵 光標向上移動一個字符 l 或 向右方向鍵 光標向右移動一個字符 [Ctrl] [f] 屏幕『向前』移動一頁&#xff08;常用) [Ct…

Kong入門學習實踐(1)基礎概念快覽

【API網關】| 總結/Edison Zhou最近在學習Kong網關&#xff0c;因此根據老習慣&#xff0c;我會將我的學習過程記錄下來&#xff0c;一來體系化整理&#xff0c;二來作為筆記供將來翻看。由于我司會直接使用Kong企業版&#xff0c;學習過程中我會使用Kong開源版。什么是Kong&am…

條件鎖

ReentrantLock類有一個方法newCondition用來生成這個鎖對象的一個條件&#xff08;ConditionObject&#xff09;對象&#xff0c;它實現了Condition接口。Condition提供了線程通訊的一套機制await和signal等線程間進行通訊的方法。。1、適用場景當某線程獲取了鎖對象&#xff0…

計算機應用技術 平面設計,全國信息化計算機應用技術水平教育考試試卷 平面設計師...

科目編號&#xff1a;4233全國信息化計算機應用技術水平教育考試試卷(考試時間&#xff1a;180分鐘 考試總分&#xff1a;100分 專業認證課程&#xff1a;Photoshop 平面設計)注意事項1、 請首先按要求在試卷的標封處填寫您的姓名、考號等&#xff1b;2、 請仔細閱讀各種題目的…

RabbitMQ之消息模式簡單易懂,超詳細分享

前言上一篇對RabbitMQ的流程和相關的理論進行初步的概述&#xff0c;如果小伙伴之前對消息隊列不是很了解&#xff0c;那么在看理論時會有些困惑&#xff0c;這里以消息模式為切入點&#xff0c;結合理論細節和代碼實踐的方式一起來學習。正文常用的模式有Simple、Work、Fanout…

每天一個linux命令(6):rmdir 命令

今天學習一下linux中命令&#xff1a; rmdir命令。rmdir是常用的命令&#xff0c;該命令的功能是刪除空目錄&#xff0c;一個目錄被刪除之前必須是空的。&#xff08;注意&#xff0c;rm - r dir命令可代替rmdir&#xff0c;但是有很大危險性。&#xff09;刪除某目錄時也必須具…

jvm系列(八):jvm知識點總覽

在江湖中要練就絕世武功必須內外兼備&#xff0c;精妙的招式和深厚的內功&#xff0c;武功的基礎是內功。對于武功低&#xff08;就像江南七怪&#xff09;的人&#xff0c;招式更重要&#xff0c;因為他們不能靠內功直接去傷人&#xff0c;只能靠招式&#xff0c;利刃上優勢來…

計算機基礎知識的文獻,四?計算機文獻檢索基礎知識(原理、結構和功能)

1.計算機檢索原理計算機一方面接受用戶的檢索提問&#xff0c;一方面從數據庫中讀取文獻記錄&#xff0c;然后把兩者進行比較&#xff0c;即檢索提問標識與文獻記錄標識進行匹配運算&#xff0c;如果比較的結果一致&#xff0c;那么這篇文獻就會作為命中文獻在檢索結果中顯示&a…

APP地推心得:可復制的APP地推方案

APP地推難&#xff1f;APP地推方案包含哪些&#xff1f;現在&#xff0c;不需要編程就能自己完成手機APP制作&#xff0c;而且還有大量的APP模板&#xff0c;可以直接套用。APP的制作資金技術大幅度降低&#xff0c;現在最大的問題就是怎么APP推廣的問題。 在移動互聯網的時代&…