欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java判斷l(xiāng)ist不為空的實(shí)現(xiàn),和限制條數(shù)不要在一起寫

 更新時(shí)間:2021年01月25日 09:37:38   作者:chushiyunen  
這篇文章主要介紹了java判斷l(xiāng)ist不為空的實(shí)現(xiàn),和限制條數(shù)不要在一起寫。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

場(chǎng)景

很多情況下,查單條記錄也用通用查詢接口,但是輸入的條件卻能確定唯一性。如果我們要確定list中只有一條記錄,如下寫法:

// 記錄不為空 && 只有一條 才繼續(xù)
if(!CollectionUtils.isEmpty(list) && 1!=list.size()){
  return "記錄條數(shù)不是1";
}
Object object = list.get(0);

上面代碼對(duì)么,貌似正確啊。后來報(bào)錯(cuò)了,被打臉了。

其實(shí)相當(dāng)于 >0 && !=1 恰好漏掉了 =0 這種情況,

因此get(0)完美報(bào)錯(cuò)。

解決方案

像這種條件不要怕麻煩,多寫幾個(gè)if更清晰。

補(bǔ)充:判斷一個(gè)java對(duì)象中的屬性值是否為空(批量判斷)

有時(shí)候數(shù)據(jù)庫(kù)中的某些字段值要求不為空,所以代碼中要判斷這些字段對(duì)應(yīng)的屬性值是否為空,當(dāng)對(duì)象屬性過多時(shí),一個(gè)一個(gè)屬性去判斷,會(huì)顯得代碼冗余,所以,可以借助工具類

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.FatalBeanException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class IsNull {
  //整個(gè)類都校驗(yàn)
  public static List<String> validateProperty(Object validateObj) {
    return validateProperty(validateObj,(String[])null);
  }
  //類中的某些字段不校驗(yàn)
  public static List<String> validateProperty(Object validateObj,String... ignoreProperties) {
    PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(validateObj.getClass());
    List<String> ignoreList = (ignoreProperties != null ? Arrays.asList(ignoreProperties) : null);
    List<String> errList = new ArrayList<>();
    for (PropertyDescriptor targetPd : targetPds) {
      Method readMethod = targetPd.getReadMethod();
      if (readMethod != null && (ignoreList == null || !ignoreList.contains(targetPd.getName()))) {
        try {
          if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {
            readMethod.setAccessible(true);
          }
          Object value = readMethod.invoke(validateObj);
          if (value instanceof String) {
            if (StringUtils.isEmpty((String) value)) {
              errList.add(validateObj.getClass().getSimpleName()+ "中的" + targetPd.getName() + "不能為空");
              continue;
            }
          }
          if (value instanceof Float || value instanceof Integer) {
            if (StringUtils.isEmpty(value.toString())) {
              errList.add(validateObj.getClass().getSimpleName()+ "中的" + targetPd.getName() + "不能為空");
              continue;
            }
          }
          if (value == null) {
            errList.add(validateObj.getClass().getSimpleName() + "中的" + targetPd.getName() + "不能為空");
          }
        } catch (Throwable ex) {
          throw new FatalBeanException(
              "Could not copy property '" + targetPd.getName() + "' from source to target", ex);
        }
      }
    }
    return errList;
  }
}

之后對(duì)拿到的數(shù)據(jù)進(jìn)行業(yè)務(wù)判斷

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • java使用dom4j操作xml示例代碼

    java使用dom4j操作xml示例代碼

    dom4j是一個(gè)Java的XML API,類似于jdom,用來讀寫XML文件,下面我來個(gè)小例子學(xué)習(xí)他的使用方法
    2013-11-11
  • Java生成條形碼code128(親測(cè)有效)

    Java生成條形碼code128(親測(cè)有效)

    這篇文章主要介紹了Java生成條形碼code128,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • springCloud config本地配置操作

    springCloud config本地配置操作

    這篇文章主要介紹了springCloud config本地配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • springboot整合swagger3報(bào)Unable to infer base url錯(cuò)誤問題

    springboot整合swagger3報(bào)Unable to infer base&nbs

    這篇文章主要介紹了springboot整合swagger3報(bào)Unable to infer base url錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • spring的jdbctemplate的crud的基類dao

    spring的jdbctemplate的crud的基類dao

    本文主要介紹了使用spring的jdbctemplate進(jìn)行增刪改查的基類Dao的簡(jiǎn)單寫法,需要的朋友可以參考下
    2014-02-02
  • Java中如何實(shí)現(xiàn)不可變Map詳解

    Java中如何實(shí)現(xiàn)不可變Map詳解

    這篇文章主要給大家介紹了關(guān)于Java中如何實(shí)現(xiàn)不可變Map的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作工具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 一文帶你了解gson如何序列化子類

    一文帶你了解gson如何序列化子類

    這篇文章主要為大家詳細(xì)介紹了gson如何序列化子類的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)和借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • idea如何配置javafxsdk詳細(xì)教程

    idea如何配置javafxsdk詳細(xì)教程

    這篇文章主要介紹了idea如何配置javafxsdk,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)火鍋工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • elasticsearch集群查詢超10000的解決方案

    elasticsearch集群查詢超10000的解決方案

    ES為了避免用戶的過大分頁(yè)請(qǐng)求造成ES服務(wù)所在機(jī)器內(nèi)存溢出,默認(rèn)對(duì)深度分頁(yè)的條數(shù)進(jìn)行了限制,默認(rèn)的最大條數(shù)是10000條,這篇文章主要給大家介紹了關(guān)于elasticsearch集群查詢超10000的解決方案,需要的朋友可以參考下
    2024-08-08
  • Java?Guava的使用技巧整理

    Java?Guava的使用技巧整理

    Guava是Google發(fā)布的一個(gè)開源庫(kù),主要提供了一些在Java開發(fā)中非常有用的工具類和API,不管是工作還是學(xué)習(xí)都是非常值得我們?nèi)ナ煜さ?,一起來看看?/div> 2023-03-03

最新評(píng)論