mybatis中foreach嵌套if標(biāo)簽方式
mybatis foreach嵌套if標(biāo)簽
代碼實(shí)現(xiàn):
Mapper.java文件
List<Map<String, Object>> getYsxmcodeByYszbh(@Param("qyName") List<String> qyName, @Param("yszh") String yszh);
XXX.xml文件
<select id="getYsxmcodeByYszbh" resultType="java.util.Map"> ?? ?<foreach collection="qyName" index="index" item="qy"> ?? ??? ?<if test="index != 0"> ?? ??? ??? ?union ?? ??? ?</if> ?? ?select ysxmcode from ${qy}_yxsxk.tpc_ysxkz where yszbh=#{yszh,jdbcType=VARCHAR} ?? ?</foreach> </select>
判斷是否為第一個(gè)循環(huán),是不加union拼接,否則加上
xml文件 $和 #的區(qū)別
${}在預(yù)編的時(shí)候會(huì)直接被變量替換,但是存在被注入的問(wèn)題,表名必須用${},因?yàn)?{}在預(yù)編的時(shí)候會(huì)被解析為?占位符,但當(dāng)被變量替換的時(shí)候會(huì)加上 ''單引號(hào),表明不允許加單引號(hào)(但是反引號(hào)``是可以的)
union與union all區(qū)別
1.union all是直接連接,取到得是所有值,記錄可能有重復(fù);union 是取唯一值,記錄沒(méi)有重復(fù)。所以u(píng)nion在進(jìn)行表鏈接后會(huì)篩選掉重復(fù)的記錄,union all不會(huì)去除重復(fù)記錄。
2.union將會(huì)按照字段的順序進(jìn)行排序;union all只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回。從效率上說(shuō),union all 要比union快很多,所以,如果可以確認(rèn)合并的兩個(gè)結(jié)果集中不包含重復(fù)數(shù)據(jù)且不需要排序時(shí)的話,那么就使用union all。
mybatis if和foreach嵌套 (同一個(gè)列,不定個(gè)數(shù)的查詢條件)
有這么一種需求
根據(jù)輸入的內(nèi)容的個(gè)數(shù)設(shè)置不同個(gè)數(shù)的查詢條件(在一個(gè)列上設(shè)置不定個(gè)數(shù)的查詢條件),這時(shí)就需要根
據(jù)foreach循環(huán)在一個(gè)列上拼接查詢條件了。
模板如下圖
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java中double轉(zhuǎn)化為BigDecimal精度缺失的實(shí)例
下面小編就為大家?guī)?lái)一篇java中double轉(zhuǎn)化為BigDecimal精度缺失的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03SpringBoot整合SpringDataRedis的示例代碼
這篇文章主要介紹了SpringBoot整合SpringDataRedis的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05SpringBoot中配置雙數(shù)據(jù)源的實(shí)現(xiàn)示例
在許多應(yīng)用程序中,可能會(huì)遇到需要連接多個(gè)數(shù)據(jù)庫(kù)的情況,本文主要介紹了SpringBoot中配置雙數(shù)據(jù)源的實(shí)現(xiàn)示例,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08Java中Array、List、Map相互轉(zhuǎn)換的方法詳解
這篇文章主要介紹了Java中Array、List、Map相互轉(zhuǎn)換的方法詳解,在實(shí)際項(xiàng)目開(kāi)發(fā)中或者一些算法面試題目中經(jīng)常需要用到Java中這三種類型的相互轉(zhuǎn)換,比如對(duì)于一個(gè)整型數(shù)組中尋找一個(gè)整數(shù)與所給的一個(gè)整數(shù)值相同,需要的朋友可以參考下2023-08-08SpringBoot中實(shí)現(xiàn)異步調(diào)用@Async詳解
這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)異步調(diào)用@Async詳解,在SpringBoot的日常開(kāi)發(fā)中,一般都是同步調(diào)用的,但實(shí)際中有很多場(chǎng)景非常適合使用異步來(lái)處理,需要的朋友可以參考下2024-01-01java實(shí)戰(zhàn)CPU占用過(guò)高問(wèn)題的排查及解決
這篇文章給大家分享了java實(shí)戰(zhàn)CPU占用過(guò)高問(wèn)題的排查及解決方法,有需要的朋友們可以學(xué)習(xí)下。2018-08-08Springboot如何使用filter對(duì)request body參數(shù)進(jìn)行校驗(yàn)
這篇文章主要介紹了Springboot如何使用filter對(duì)request body參數(shù)進(jìn)行校驗(yàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03