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í)的話(huà),那么就使用union all。
mybatis if和foreach嵌套 (同一個(gè)列,不定個(gè)數(shù)的查詢(xún)條件)
有這么一種需求
根據(jù)輸入的內(nèi)容的個(gè)數(shù)設(shè)置不同個(gè)數(shù)的查詢(xún)條件(在一個(gè)列上設(shè)置不定個(gè)數(shù)的查詢(xún)條件),這時(shí)就需要根
據(jù)foreach循環(huán)在一個(gè)列上拼接查詢(xún)條件了。
模板如下圖

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- mybatis 映射文件中if標(biāo)簽判斷字符串相等的兩種方式
- MyBatis動(dòng)態(tài)Sql之if標(biāo)簽的用法詳解
- mybatis if標(biāo)簽使用總結(jié)
- mybatis if標(biāo)簽判斷不生效的解決方法
- 解決Mybatis中foreach嵌套使用if標(biāo)簽對(duì)象取值的問(wèn)題
- Mybatis的mapper.xml中if標(biāo)簽test判斷的用法說(shuō)明
- Mybatis中where標(biāo)簽與if標(biāo)簽結(jié)合使用詳細(xì)說(shuō)明
- MyBatis中if標(biāo)簽的基本使用
相關(guān)文章
java8 stream中Collectors.toMap空指針問(wèn)題及解決
這篇文章主要介紹了java8 stream中Collectors.toMap空指針問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
SpringBoot結(jié)合Redis配置工具類(lèi)實(shí)現(xiàn)動(dòng)態(tài)切換庫(kù)
本文主要介紹了SpringBoot結(jié)合Redis配置工具類(lèi)實(shí)現(xiàn)動(dòng)態(tài)切換庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Java實(shí)現(xiàn)簡(jiǎn)單的日歷界面
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的日歷界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法
遇到了個(gè)問(wèn)題,同一天可以輸入多個(gè)時(shí)間段,但是每個(gè)時(shí)間段的時(shí)間不能出現(xiàn)重疊,這不就是判斷數(shù)據(jù)返回是否有重疊的變種嗎,所以本文給大家介紹了Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法,需要的朋友可以參考下2024-07-07
Java Excel文件加密保護(hù)數(shù)據(jù)安全
這篇文章主要為大家介紹了Java Excel文件加密保護(hù)數(shù)據(jù)安全的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Java中new與clone操作對(duì)象的比較方法舉例
這篇文章主要給大家介紹了關(guān)于Java中new與clone操作對(duì)象的比較方法,在java中對(duì)象的誕生是我們開(kāi)發(fā)人員new出來(lái)的,對(duì)象的使用也是我們開(kāi)發(fā)人員進(jìn)行操作的,需要的朋友可以參考下2024-07-07

