最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

場景

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

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

上面代碼對么,貌似正確啊。后來報錯了,被打臉了。

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

因此get(0)完美報錯。

解決方案

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

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

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

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 {
  //整個類都校驗
  public static List<String> validateProperty(Object validateObj) {
    return validateProperty(validateObj,(String[])null);
  }
  //類中的某些字段不校驗
  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;
  }
}

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

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

相關(guān)文章

  • SpringBoot自定義加載yml實現(xiàn)方式,附源碼解讀

    SpringBoot自定義加載yml實現(xiàn)方式,附源碼解讀

    這篇文章主要介紹了SpringBoot自定義加載yml實現(xiàn)方式附源碼解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java自定義協(xié)議報文封裝 添加Crc32校驗的實例

    Java自定義協(xié)議報文封裝 添加Crc32校驗的實例

    下面小編就為大家分享一篇Java自定義協(xié)議報文封裝 添加Crc32校驗的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Java中ArrayList和LinkedList的區(qū)別

    Java中ArrayList和LinkedList的區(qū)別

    ArrayList和LinkedList在這個方法上存在一定的性能差異,本文就介紹了Java中ArrayList和LinkedList的區(qū)別,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringBoot文件上傳的原理解析

    SpringBoot文件上傳的原理解析

    這篇文章主要介紹了SpringBoot文件上傳的原理解析,SpringBoot 文件上傳是一種方便快捷的方式,可以將文件上傳到服務(wù)器,通過使用SpringBoot的文件上傳功能,可以輕松地實現(xiàn)文件上傳功能,需要的朋友可以參考下
    2023-10-10
  • Java判斷上傳圖片格式的實例代碼

    Java判斷上傳圖片格式的實例代碼

    這篇文章主要介紹了Java判斷上傳圖片格式的實例代碼,在文中給大家提到了Java使用文件頭的類型判斷上傳的文件是否為圖片類型,需要的朋友可以參考下
    2019-06-06
  • Java基礎(chǔ)題新手練習(xí)(三)

    Java基礎(chǔ)題新手練習(xí)(三)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • Java實現(xiàn)上傳Excel文件并導(dǎo)入數(shù)據(jù)庫

    Java實現(xiàn)上傳Excel文件并導(dǎo)入數(shù)據(jù)庫

    這篇文章主要介紹了在java的基礎(chǔ)上學(xué)習(xí)上傳Excel文件并導(dǎo)出到數(shù)據(jù)庫,感興趣的小伙伴不要錯過奧
    2021-09-09
  • 解決spring jpa中update的坑

    解決spring jpa中update的坑

    這篇文章主要介紹了spring jpa中update遇到的坑及解決方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java代理模式與動態(tài)代理之間的關(guān)系以及概念

    Java代理模式與動態(tài)代理之間的關(guān)系以及概念

    代理模式是開發(fā)中常見的一種設(shè)計模式,使用代理模式可以很好的對程序進(jìn)行橫向擴(kuò)展。動態(tài)代理:代理類在程序運(yùn)行時被創(chuàng)建的代理方式。關(guān)鍵在于動態(tài),程序具有了動態(tài)特性,可以在運(yùn)行期間根據(jù)不同的目標(biāo)對象生成動態(tài)代理對象
    2023-02-02
  • Java?IO流—異常及捕獲異常處理?try…catch…finally

    Java?IO流—異常及捕獲異常處理?try…catch…finally

    這篇文章主要介紹了Java?IO流—異常及捕獲異常處理?try…catch…finally,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論

策勒县| 遂溪县| 清丰县| 红桥区| 卢氏县| 阳东县| 中卫市| 普洱| 贵港市| 清涧县| 南和县| 曲阳县| 库伦旗| 肥乡县| 洪洞县| 屯留县| 元朗区| 仁寿县| 安阳市| 普兰店市| 安吉县| 大城县| 小金县| 阜阳市| 宁武县| 江川县| 顺昌县| 清水县| 惠安县| 玉树县| 沂水县| 车险| 广州市| 辽阳县| 中卫市| 漯河市| 湾仔区| 灌南县| 石渠县| 台中市| 石楼县|