mybatis中foreach嵌套if標(biāo)簽方式
mybatis foreach嵌套if標(biāo)簽
代碼實現(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>判斷是否為第一個循環(huán),是不加union拼接,否則加上
xml文件 $和 #的區(qū)別
${}在預(yù)編的時候會直接被變量替換,但是存在被注入的問題,表名必須用${},因為#{}在預(yù)編的時候會被解析為?占位符,但當(dāng)被變量替換的時候會加上 ''單引號,表明不允許加單引號(但是反引號``是可以的)
union與union all區(qū)別
1.union all是直接連接,取到得是所有值,記錄可能有重復(fù);union 是取唯一值,記錄沒有重復(fù)。所以union在進行表鏈接后會篩選掉重復(fù)的記錄,union all不會去除重復(fù)記錄。
2.union將會按照字段的順序進行排序;union all只是簡單的將兩個結(jié)果合并后就返回。從效率上說,union all 要比union快很多,所以,如果可以確認(rèn)合并的兩個結(jié)果集中不包含重復(fù)數(shù)據(jù)且不需要排序時的話,那么就使用union all。
mybatis if和foreach嵌套 (同一個列,不定個數(shù)的查詢條件)
有這么一種需求
根據(jù)輸入的內(nèi)容的個數(shù)設(shè)置不同個數(shù)的查詢條件(在一個列上設(shè)置不定個數(shù)的查詢條件),這時就需要根
據(jù)foreach循環(huán)在一個列上拼接查詢條件了。
模板如下圖

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java8 stream中Collectors.toMap空指針問題及解決
這篇文章主要介紹了java8 stream中Collectors.toMap空指針問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
SpringBoot結(jié)合Redis配置工具類實現(xiàn)動態(tài)切換庫
本文主要介紹了SpringBoot結(jié)合Redis配置工具類實現(xiàn)動態(tài)切換庫,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法
遇到了個問題,同一天可以輸入多個時間段,但是每個時間段的時間不能出現(xiàn)重疊,這不就是判斷數(shù)據(jù)返回是否有重疊的變種嗎,所以本文給大家介紹了Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法,需要的朋友可以參考下2024-07-07

