Java實(shí)現(xiàn)入?yún)?shù)據(jù)批量數(shù)據(jù)校驗(yàn)詳解
入?yún)?shù)據(jù)批量數(shù)據(jù)校驗(yàn)
在業(yè)務(wù)處理中一般入?yún)⑹菃螚l數(shù)據(jù),這樣數(shù)據(jù)校驗(yàn)比較容易,直接用注解標(biāo)注對(duì)應(yīng)的校驗(yàn)用注解就可以了,但是這種方法對(duì)于集合數(shù)據(jù)的校驗(yàn)不適用。但是業(yè)務(wù)中也有可能是傳入的批量數(shù)據(jù),還要校驗(yàn)每個(gè)字段值是否合規(guī)。我搜過(guò)其他猿友寫(xiě)的批量校驗(yàn)的邏輯,感覺(jué)很繁瑣,所以我記錄一下我的我感覺(jué)比較簡(jiǎn)便的方法,代碼量減少,還能滿足校驗(yàn)要求。廢話不多說(shuō),看代碼。
package com.sydata.zt.common.utils;
import javax.validation.Valid;
import java.util.*;
/**
* 能被注解@Valid校驗(yàn)的List
* @author XX
* @date 2023-12-25
*/
public class ValidableList<E> implements List<E> {
@Valid
private List<E> list;
public ValidableList() {
this.list = new ArrayList<>();
}
public ValidableList(List<E> list) {
this.list = list;
}
public List<E> getList() {
return list;
}
public void setList(List<E> list) {
this.list = list;
}
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public boolean contains(Object o) {
return list.contains(o);
}
@Override
public Iterator<E> iterator() {
return list.iterator();
}
@Override
public Object[] toArray() {
return list.toArray();
}
@Override
public <T> T[] toArray(T[] a) {
return list.toArray(a);
}
@Override
public boolean add(E e) {
return list.add(e);
}
@Override
public boolean remove(Object o) {
return list.remove(o);
}
@Override
public boolean containsAll(Collection<?> c) {
return list.contains(c);
}
@Override
public boolean addAll(Collection<? extends E> c) {
return list.addAll(c);
}
@Override
public boolean addAll(int index, Collection<? extends E> c) {
return list.addAll(index, c);
}
@Override
public boolean removeAll(Collection<?> c) {
return list.removeAll(c);
}
@Override
public boolean retainAll(Collection<?> c) {
return list.retainAll(c);
}
@Override
public void clear() {
list.clear();
}
@Override
public E get(int index) {
return list.get(index);
}
@Override
public E set(int index, E element) {
return list.set(index, element);
}
@Override
public void add(int index, E element) {
list.add(index, element);
}
@Override
public E remove(int index) {
return list.remove(index);
}
@Override
public int indexOf(Object o) {
return list.indexOf(o);
}
@Override
public int lastIndexOf(Object o) {
return list.lastIndexOf(o);
}
@Override
public ListIterator<E> listIterator() {
return list.listIterator();
}
@Override
public ListIterator<E> listIterator(int index) {
return list.listIterator(index);
}
@Override
public List<E> subList(int fromIndex, int toIndex) {
return list.subList(fromIndex, toIndex);
}
}具體使用方法就很簡(jiǎn)單了,直接按照單個(gè)校驗(yàn)的方式添加注解,修改一下接收的集合就可以了

這樣,批量校驗(yàn)的功能就可以了并且可以被復(fù)用。
到此這篇關(guān)于Java實(shí)現(xiàn)入?yún)?shù)據(jù)批量數(shù)據(jù)校驗(yàn)詳解的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Swing實(shí)現(xiàn)讓窗體居中顯示的方法示例
這篇文章主要介紹了Java Swing實(shí)現(xiàn)讓窗體居中顯示的方法,結(jié)合實(shí)例形式分析了swing使用setBounds方法控制窗口布局的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11
SpringBoot復(fù)雜參數(shù)應(yīng)用詳細(xì)講解
我們?cè)诰帉?xiě)接口時(shí)會(huì)傳入復(fù)雜參數(shù),如Map、Model等,這種類似的參數(shù)會(huì)有相應(yīng)的參數(shù)解析器進(jìn)行解析,并且最后會(huì)將解析出的值放到request域中,下面我們一起來(lái)探析一下其中的原理2022-09-09
Java實(shí)現(xiàn)億級(jí)用戶在線狀態(tài)統(tǒng)計(jì)的兩種方法
本文主要介紹了Java實(shí)現(xiàn)億級(jí)用戶在線狀態(tài)統(tǒng)計(jì)的示例,包括基于總數(shù)的統(tǒng)計(jì)方案和基于用戶標(biāo)識(shí)的統(tǒng)計(jì)方案,具有一定的參考價(jià)值,感興趣的可以了解一下2025-05-05
Spring Boot中配置定時(shí)任務(wù)、線程池與多線程池執(zhí)行的方法
這篇文章主要給大家介紹了關(guān)于Spring Boot中配置定時(shí)任務(wù)、線程池與多線程池執(zhí)行的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
將本地jar包安裝進(jìn)入maven倉(cāng)庫(kù)(實(shí)現(xiàn)方法)
下面小編就為大家?guī)?lái)一篇將本地jar包安裝進(jìn)入maven倉(cāng)庫(kù)(實(shí)現(xiàn)方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06

