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

Mybatis的mapper.xml中if標(biāo)簽test判斷的用法說明

 更新時間:2022年06月06日 15:55:33   作者:大唐冠軍侯  
這篇文章主要介紹了Mybatis的mapper.xml中if標(biāo)簽test判斷的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mapper.xml中if標(biāo)簽test判斷的用法

1. 字符串等于條件的兩種寫法

① 將雙引號和單引號的位置互換

<if test=' testString != null and testString == "A" '>
? ?AND 表字段 = #{testString}
</if>

② 加上.toString()

<if test=" testString != null and testString == 'A'.toString() ">
  AND 表字段 = #{testString}
</if>

2. 非空條件的判斷

長久以來,我們判斷非空非null的判斷條件都是如下所示:

<if test="xxx !=null and xxx !=''">

但是這樣的判斷只是針對String的,如果是別的類型,這個條件就不一定成立了,比如最經(jīng)典的:當(dāng)是數(shù)字0時,這個判斷就會把0過濾掉,所以如果要判斷數(shù)字,我們一般會再加上一個0的判斷(這和mybatis的源碼邏輯有關(guān),有興趣的可以去看看源碼)

<if test="xxx !=null and xxx !='' or xxx == 0">

但是如果傳進(jìn)來的是數(shù)組或者集合呢?我們要再寫別的判斷嗎?能不能封裝個方法呢?

答案是可以的。

if標(biāo)簽里面的test判斷是可以使用工具類來做判斷的,畢竟test后面跟的也是一個布爾值,其用法是:

<if test="@完整的包名類名@方法名(傳參)">

例如:

<if test="@com.xxx.util.MybatisTestUtil@isNotEmpty(obj)">

下面是我寫的一個簡陋的工具類,不是很全面,拋磚引玉,各位可以根據(jù)需要補(bǔ)充。

import java.util.Collection;
import java.util.Map;
/**
?* @description: mybatis的<if test="">標(biāo)簽中使用的非空判斷工具類
?* ? ? ?使用方式:<if test="@com.xxx.xxx.util.MybatisTsetUtil@isNotEmpty(obj)">
?* @author: singleDog
?* @date: 2020/7/20
?*/
public class MybatisTestUtil {
? ? public static boolean isEmpty(Object o) {
? ? ? ? if (o == null) {
? ? ? ? ? ? return true;
? ? ? ? }
? ? ? ? if (o instanceof String) {
? ? ? ? ? ? return ((String) o).trim().length() == 0;
? ? ? ? } else if (o instanceof Collection) {
? ? ? ? ? ? return ((Collection) o).isEmpty();
? ? ? ? } else if (o instanceof Map) {
? ? ? ? ? ? return ((Map) o).isEmpty();
? ? ? ? } else if (o.getClass().isArray()) {
? ? ? ? ? ? return ((Object[]) o).length == 0;
? ? ? ? } else {
? ? ? ? ? ? return false;
? ? ? ? }
? ? }
? ? public static boolean isNotEmpty(Object o) {
? ? ? ? return !isEmpty(o);
? ? }
}

3. 判斷數(shù)組是否包含某個元素

<if test="list.contains(xxx)">
?? ?//...
</if>

注意,元素類型是字符串的話,參考1中的寫法,一般這樣寫

<!--包含-->
<if test="list.contains('示例元素'.toString())">
?? ?//...
</if>

<!--不包含-->
<if test="!list.contains('示例元素'.toString())">
?? ?//...
</if>

mapper.xml <if test>書寫時候的一些坑

1. 分頁

map中添加了兩個int類型的數(shù)據(jù),

map.put("startNum",(page.getPageNum()-1)*page.getNumPerPage());
map.put("pageSize",page.getNumPerPage());

錯誤的SQL書寫:

<if test="startNum != null ?and startNum != '' ">
? ? ? ?LIMIT #{startNum},#{pageSize}
</if>

正確的SQL書寫

<if test="startNum != null">
? ? ? ?LIMIT #{startNum},#{pageSize}
</if>

因為startNum里存的是int數(shù)據(jù),所以不能與空字符串進(jìn)行比較,強(qiáng)行比較時會報錯。

2. 字符串形式的數(shù)據(jù)比較

map中添加的是一個字符串形式的“1”

map.put("uploadFlag",upload.getUploadFlag());

如果想在XML中比較,以下兩種方式都可以:

2.1 test使用雙引號

比較的對象使用單引號點toString()方法:

<if test="uploadFlag=='1'.toString()">
? ? ?and pw.id in (select pw_id from t_contract_upload)
</if>

2.2 test使用單引號

比較的對象直接使用雙引號:

<if test='uploadFlag=="2" '>
? ? ?and pw.id in (select pw_id from t_contract_upload)
</if>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java11?中基于嵌套關(guān)系的訪問控制優(yōu)化問題

    Java11?中基于嵌套關(guān)系的訪問控制優(yōu)化問題

    在?Java?語言中,類和接口可以相互嵌套,這種組合之間可以不受限制的彼此訪問,包括訪問彼此的構(gòu)造函數(shù)、字段、方法,接下來通過本文給大家介紹Java11中基于嵌套關(guān)系的訪問控制優(yōu)化問題,感興趣的朋友一起看看吧
    2022-01-01
  • SpringBoot之LogBack配置詳解

    SpringBoot之LogBack配置詳解

    這篇文章主要介紹了SpringBoot之LogBack配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • SpringBoot開發(fā)教程之AOP日志處理

    SpringBoot開發(fā)教程之AOP日志處理

    現(xiàn)在凡是企業(yè)級的或者稍微大點項目,基本都需要日志管理,下面這篇文章主要給大家介紹了關(guān)于SpringBoot開發(fā)教程之AOP日志處理 的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Java 過濾器實現(xiàn)敏感詞匯過濾功能

    Java 過濾器實現(xiàn)敏感詞匯過濾功能

    通過使用 Java 過濾器,我們可以輕松地實現(xiàn)敏感詞匯過濾的功能,以保護(hù)用戶免受不良內(nèi)容的侵害,讓我們通過一個簡單的示例來演示我們的敏感詞匯過濾器是如何工作的,感興趣的朋友一起看看吧
    2024-01-01
  • Spring內(nèi)部bean和級聯(lián)屬性用法詳解

    Spring內(nèi)部bean和級聯(lián)屬性用法詳解

    這篇文章主要介紹了Java內(nèi)部bean和級聯(lián)屬性用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • java處理日期的工具類DateUtil

    java處理日期的工具類DateUtil

    這篇文章主要為大家詳細(xì)介紹了java處理日期的工具類DateUtil,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • EasyCode插件使用詳解(推薦)

    EasyCode插件使用詳解(推薦)

    EasyCode是idea的一個插件,這個插件功能很強(qiáng)大,今天通過本文給大家分享EasyCode插件使用詳解,需要的朋友可以參考下
    2020-09-09
  • 使用FeignClient設(shè)置動態(tài)Url

    使用FeignClient設(shè)置動態(tài)Url

    這篇文章主要介紹了使用FeignClient設(shè)置動態(tài)Url方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Maven引入本地Jar包并打包進(jìn)War包中的方法

    Maven引入本地Jar包并打包進(jìn)War包中的方法

    本篇文章主要介紹了Maven引入本地Jar包并打包進(jìn)War包中的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java 生成帶Logo和文字的二維碼

    Java 生成帶Logo和文字的二維碼

    這篇文章主要介紹了Java 生成帶Logo和文字的二維碼的方法,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04

最新評論