您好,登錄后才能下訂單哦!
小編給大家分享一下mybatis中foreach嵌套if標簽的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
代碼實現:
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>
判斷是否為第一個循環,是不加union拼接,否則加上
${}在預編的時候會直接被變量替換,但是存在被注入的問題,表名必須用${},因為#{}在預編的時候會被解析為?占位符,但當被變量替換的時候會加上 ''單引號,表明不允許加單引號(但是反引號``是可以的)
1.union all是直接連接,取到得是所有值,記錄可能有重復;union 是取唯一值,記錄沒有重復。所以union在進行表鏈接后會篩選掉重復的記錄,union all不會去除重復記錄。
2.union將會按照字段的順序進行排序;union all只是簡單的將兩個結果合并后就返回。從效率上說,union all 要比union快很多,所以,如果可以確認合并的兩個結果集中不包含重復數據且不需要排序時的話,那么就使用union all。
根據輸入的內容的個數設置不同個數的查詢條件(在一個列上設置不定個數的查詢條件),這時就需要根
據foreach循環在一個列上拼接查詢條件了。
看完了這篇文章,相信你對“mybatis中foreach嵌套if標簽的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。