Mybatis的xml中使用if/else標(biāo)簽的具體使用
使用if標(biāo)簽進(jìn)行查詢
SELECT orderNo, adname, orderstatus FROM order_A where <if test="order!=null"> order=#{order} </if> <if test="title!=null"> and title=#{title} </if>
需要注意的是:如果第一個(gè)if的order為null的話 第二值title也為null的話運(yùn)行會(huì)報(bào)錯(cuò),就算第一個(gè)if等于null 那么查詢語(yǔ)句變成 where and title='哈哈哈'
這樣運(yùn)行的話也會(huì)出現(xiàn)錯(cuò)誤。
where標(biāo)簽出場(chǎng)
SELECT orderNo, adname, orderstatus FROM order_A <where> <if test="order!=null"> order=#{order} </if> <if test="order!=null"> and title=#{title} </if> </where>
where 元素只會(huì)在至少有一個(gè)子元素的條件返回 SQL 子句的情況下才去插入WHERE子句。而且,若語(yǔ)句的開頭為AND或OR,where 元素也會(huì)將它們?nèi)コ_@個(gè)只能解決2個(gè)值都為空。
不能解決order值為空但是title值為空時(shí)還是會(huì)出現(xiàn)語(yǔ)句錯(cuò)誤的情況,這個(gè)時(shí)候我們可以在and 前面用1=1或者true來解決
如:
或這樣
if/else 使用 choose,when,otherwise 代替
由于Mybatis中沒有else標(biāo)簽但是可以通過choose,when,otherwise來使用
SELECT orderNo, adname, orderstatus FROM <choose> <when test=" platformtype != null and platformtype.trim() != '' and platformtype == 1"> `orders_A` as orderTable </when> <when test=" platformtype != null and platformtype.trim() != '' and platformtype == 2"> `orders_B` as orderTable </when> <when test=" platformtype != null and platformtype.trim() != '' and platformtype == 3"> `orders_C` as orderTable </when> <otherwise> `orders_A` as orderTable </otherwise> </choose>
翻譯一下上面的語(yǔ)句:
當(dāng)platformtype 值不為空并且把platformtype 值進(jìn)行去除空字符串,并且值等于1時(shí)
就會(huì)把表orders_A進(jìn)行拼接,如果條件都不符合的話就會(huì)走otherwise標(biāo)簽?zāi)J(rèn)拼接orders_A表進(jìn)行查詢
choose,when,otherwise標(biāo)簽有點(diǎn)像Java中的switch 當(dāng)where的test值滿足時(shí)會(huì)拼接里面的表,otherwise表示其他when標(biāo)簽都不滿足時(shí)執(zhí)行拼接
到此這篇關(guān)于Mybatis的xml中使用if/else標(biāo)簽的具體使用的文章就介紹到這了,更多相關(guān)Mybatis xml=使用if/else標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java通過綁定實(shí)現(xiàn)快速將數(shù)據(jù)導(dǎo)出至Excel
把數(shù)據(jù)導(dǎo)出至?Excel?是很常見的需求,而數(shù)據(jù)的持久化,往往又放在數(shù)據(jù)庫(kù)中,因此把數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出到?Excel中,成了非常普遍的一個(gè)需求,下面我們就來看看Java如何通過綁定實(shí)現(xiàn)快速將數(shù)據(jù)導(dǎo)出至Excel吧2023-10-10舉例講解Java的Spring框架中AOP程序設(shè)計(jì)方式的使用
這篇文章主要介紹了Java的Spring框架中AOP程序設(shè)計(jì)方式的使用講解,文中舉的AOP下拋出異常的例子非常實(shí)用,需要的朋友可以參考下2016-04-04SpringBoot+Redis實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)的示例
本文將結(jié)合實(shí)例代碼,介紹SpringBoot+Redis實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06springcloud注冊(cè)hostname或者ip的那些事
Spring cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的服務(wù)治理工具包,在微服務(wù)架構(gòu)中用于管理和協(xié)調(diào)服務(wù)的。這篇文章主要介紹了springcloud注冊(cè)hostname或者ip,需要的朋友可以參考下2019-11-11Java獲取漢字拼音的全拼和首拼實(shí)現(xiàn)代碼分享
這篇文章主要介紹了Java獲取漢字拼音的全拼和首拼實(shí)現(xiàn)代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-06-06springboot中使用ElasticSearch的詳細(xì)教程
這篇文章主要介紹了ElasticSearch在springboot中使用的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05