【Mybatis-plus】在mybatis-plus中 if test標簽如何判斷 list不為空

博主介紹:?全網粉絲22W+,CSDN博客專家、Java領域優質創作者,掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域?

技術范圍:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大數據、物聯網、機器學習等設計與開發。

感興趣的可以先關注收藏起來,在工作中、生活上等遇到相關問題都可以給我留言咨詢,希望幫助更多的人。

在mybatis-plus中 if test標簽如何判斷 list不為空

  • 一、使用 != null 和 size() > 0
  • 二、 使用 !empty
  • 三、注意事項
  • 四、完整示例
  • 五、總結

MyBatis-Plus 中, <if test="..."> 標簽用于動態生成 SQL 語句。如果需要判斷一個 List 是否不為空,可以使用以下方法:

一、使用 != null 和 size() > 0

在 test 表達式中,可以通過 != null 判斷 List 是否為 null,并通過size() > 0判斷 List 是否非空。

示例:

<select id="selectUsers" resultType="User">SELECT * FROM userWHERE 1 = 1<if test="userList != null and userList.size() > 0">AND id IN<foreach collection="userList" item="item" open="(" separator="," close=")">#{item}</foreach></if>
</select>

說明:

  • userList != null:判斷 userList 是否為 null

  • userList.size() > 0:判斷 userList 是否非空

二、 使用 !empty

MyBatis 提供了 empty 關鍵字,可以簡化判斷邏輯。!empty 會同時檢查對象是否為 null是否為空集合。

示例:

<select id="selectUsers" resultType="User">SELECT * FROM userWHERE 1 = 1<if test="!empty(userList)">AND id IN<foreach collection="userList" item="item" open="(" separator="," close=")">#{item}</foreach></if>
</select>

說明:

  • !empty(userList):等同于 userList != null and userList.size() > 0

三、注意事項

  • 如果Listnull,直接調用 size() 會拋出 NullPointerException,因此需要先判斷 != null

  • !empty() 是更簡潔的寫法,推薦使用。

四、完整示例

假設有一個查詢方法,根據傳入的List<Long>查詢用戶信息:

List<User> selectUsers(@Param("userList") List<Long> userList);

對應的 XML 配置:

<select id="selectUsers" resultType="User">SELECT * FROM userWHERE 1 = 1<if test="!empty(userList)">AND id IN<foreach collection="userList" item="item" open="(" separator="," close=")">#{item}</foreach></if>
</select>

五、總結

推薦使用 !empty(list) 來判斷 List 是否非空,因為它更簡潔且安全。

如果需要顯式判斷,可以使用 list != null and list.size() > 0

確保傳入的 List 參數在方法中正確使用 @Param 注解。


好了,今天分享到這里。希望你喜歡這次的探索之旅!不要忘記 “點贊” 和 “關注” 哦,我們下次見!🎈

本文完結!

祝各位大佬和小伙伴身體健康,萬事如意,發財暴富,掃下方二維碼與我一起交流!!!在這里插入圖片描述

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

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

相關文章

FRP在物聯網設備中的穿透方案

物聯網設備常位于NAT后&#xff0c;FRP為其提供穩定穿透鏈路。 配置要點 輕量化部署&#xff1a;使用ARM版本FRP客戶端&#xff0c;適配樹莓派等設備9。 自啟動腳本&#xff1a;通過systemd或crontab實現設備重啟后自動連接26。 低功耗優化&#xff1a;調整心跳間隔&#xf…

【遞歸,搜索與回溯算法篇】- 名詞解釋

一. 遞歸 1. 什么是遞歸&#xff1f; 定義&#xff1a; 函數自己調用自己的情況關鍵點&#xff1a; ?終止條件&#xff1a; 必須明確遞歸出口&#xff0c;避免無限遞歸 ?子問題拆分&#xff1a; 問題需能分解成結構相同的更小的子問題缺點&#xff1a; ?棧溢出風險&#x…

條件變量,鎖,共享數據的關系

條件變量、共享數據和鎖之間的三方耦合關系源于多線程環境下對資源訪問的同步需求。以下是關鍵點分析&#xff1a; 條件變量中通常會對共享數據進行判斷和處理&#xff0c;如果不加鎖就會出現數據競爭的問題&#xff0c;所以并不是條件變量要跟鎖一起使用&#xff0c;而是上鎖為…

大屏技術匯集【目錄】

Cesium 自從首次發布以來&#xff0c;經歷了多個版本的迭代和更新&#xff0c;每個版本都帶來了性能改進、新功能添加以及對現有功能的優化。以下是 Cesium 一些重要版本及其主要特點&#xff1a; 主要版本概述 Cesium 1.0 (2012年) 初始版本發布&#xff0c;確立了Cesium作為…

圖解AUTOSAR_CP_EEPROM_Abstraction

AUTOSAR EEPROM抽象模塊詳細說明 基于AUTOSAR標準的EEPROM抽象層技術解析 目錄 1. 概述 1.1 核心功能1.2 模塊地位2. 架構概覽 2.1 架構層次2.2 模塊交互3. 配置結構 3.1 主要配置容器3.2 關鍵配置參數4. 狀態管理 4.1 基本狀態4.2 狀態轉換5. 接口設計 5.1 主要接口分類5.2 接…

C++相關基礎概念之入門講解(下)

1. 引用 ? int main() {const int a10;int& aaa;aa;cout<<aa<<endl; } 引用 不是新定義一個變量&#xff0c;而 是給已存在變量取了一個別名 &#xff0c;編譯器不會為引用變量開辟內存空 間&#xff0c;它和它引用的變量 共用同一塊內存空間&#xff08;初…

注意力機制,本質上是在做什么?

本文以自注意機制為例&#xff0c;輸入一個4*4的矩陣 如下&#xff1a; input_datatorch.tensor([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ],dtypetorch.float) 得到Q和K的轉置如下。 此時&#xff0c;計算QK^T ,得到如下結果 第一行第一個位置就是第一條樣本和第…

記一次wsl2+docker無法運行的經歷

前情提要 由于某個大創項目的需要和對貓娘機器人的迫切渴求&#xff08;bushi 需要在電腦里面安裝docker desktop。由于電腦里面安裝了wsl2環境 因此決定使用wsl2dockerdesktop的方式配置docker 遇到的問題 在像往常一樣安裝docker desktop并且啟動時 提示錯誤&#xff1a; …

PageHelper插件依賴引入不報錯,但用不了

情況: 父模塊pom. Xml 引入1. 4. 0以上版本的pagehelper-spring-boot-starter。 要用到插件的子模塊&#xff0c;去掉版本號&#xff0c;引入和父模塊一樣的依賴。 引入成功&#xff0c;沒有報錯&#xff0c;但是打開右邊的maven里面沒有找到PageHelper插件。 終端清空并重…

Windows搭建免翻墻的BatteryHistorian

文章參考 GitCode - 全球開發者的開源社區,開源代碼托管平臺 免翻墻的BatteryHistorian主要原理&#xff1a;修改go源碼 1.安裝Java環境 1.點擊下載 Java JDK&#xff0c;并安裝,一路next 2.java -version 檢驗是否安裝成功 2.安裝Git工具 1、點擊下載 Git&#xff0c;并…

項目中pnpm版本和全局pnpm版本不一致

項目中pnpm版本和全局pnpm版本不一致 檢查package.json中&#xff0c;是否存在"packageManager": “pnpm8.6.10”&#xff0c;限制了pnpm的版本。

透析Vue的nextTick原理

nextTick 是 Vue.js 中的一個核心機制&#xff0c;用于在 下一次 DOM 更新周期后 執行回調函數。它的核心原理是 利用 JavaScript 的事件循環機制&#xff08;Event Loop&#xff09;&#xff0c;結合微任務&#xff08;Microtask&#xff09;或宏任務&#xff08;Macrotask&am…

WRF/Chem 模式技術解讀:為大氣污染治理提供有力支撐

技術點目錄 第一部分、WRF-Chem模式應用案例和理論基礎第二部分、Linux環境配置及WRF-CHEM第三部分、WRF-Chem模式編譯&#xff0c;排放源制作第四部分、WRF-Chem數據準備&#xff08;氣象、排放、初邊界條件等&#xff09;&#xff0c;案例實踐第五部分、模擬結果提取、數據可…

ccfcsp2701如此編碼

//如此編碼 #include<iostream> using namespace std; int main(){int n,m;cin>>n>>m;int a[21],b[21],c[21];for(int i1;i<n;i){cin>>a[i];}c[0]1;for(int i1;i<n;i){c[i]c[i-1]*a[i];}b[1](m%c[1])/c[0];int s1,s20;for(int i2;i<n;i){s2s2…

74HC04(反相器)和74HC14(反相器、施密特觸發器)的區別

74HC04和74HC14的具體區別詳解 同樣具有反相器功能&#xff0c;你知道74HC04和74HC14的具體區別嗎&#xff1f; 74HC04 對于74HC04很好理解&#xff0c;輸入低電平&#xff0c;輸出高電平&#xff1b;輸入高電平&#xff0c;輸出低電平。 建議操作條件&#xff1a; 下圖是TI的…

如何緩解大語言模型推理中的“幻覺”(Hallucination)?

目錄 如何緩解大語言模型推理中的“幻覺”&#xff08;Hallucination&#xff09;&#xff1f; 1. 什么是大語言模型的“幻覺”&#xff08;Hallucination&#xff09;&#xff1f; 幻覺的常見類型 2. 如何緩解大模型的幻覺問題&#xff1f; 方法 1&#xff1a;使用知識檢索…

Linux權限管理詳解

Linux權限管理系統 Linux作為一個多用戶操作系統&#xff0c;其權限管理系統是保障系統安全的重要組成部分。通過合理設置文件和目錄的權限&#xff0c;可以有效控制用戶對系統資源的訪問。 一、基本權限概念 Linux系統中的權限分為三類&#xff1a; 讀權限(r)&#xff1a;…

第十四次CCF-CSP認證(含C++源碼)

第十四次CCF-CSP認證 賣菜滿分思路 買菜滿分思路 再賣菜滿分題解&#xff08;差分約束&#xff09;solution 1(枚舉 correct but 超時)solution 2(正解) 賣菜 題目鏈接 滿分思路 就是模擬一下這個調整第二天菜價的過程&#xff0c;其中對于兩種只有一個鄰居的情況下做出調整&…

CCBCISCN復盤

AWDP – ccfrum 自己搭了一下環境, 復現一下這道題目, 之前比賽的時候完全沒想到這個漏洞要怎么打, 修也不知道要怎么修, 就僅僅是對用戶名的賬號和密碼進行了一下過濾, 完全沒起到作用, 唉, 實在太菜 如果想要嘗試復現的話可以嘗試拉取這個鏡像, 我打完之后就直接把這個容器給…

(每日一道算法題)交易逆序對的總數

LCR 170. 交易逆序對的總數 - 力扣&#xff08;LeetCode&#xff09; 在股票交易中&#xff0c;如果前一天的股價高于后一天的股價&#xff0c;則可以認為存在一個「交易逆序對」。請設計一個程序&#xff0c;輸入一段時間內的股票交易記錄 record&#xff0c;返回其中存在的「…