溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mybatis中foreach嵌套if標(biāo)簽的示例分析

發(fā)布時(shí)間:2022-03-23 11:24:41 來源:億速云 閱讀:648 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下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ì)直接被變量替換,但是存在被注入的問題,表名必須用${},因?yàn)?{}在預(yù)編的時(shí)候會(huì)被解析為?占位符,但當(dāng)被變量替換的時(shí)候會(huì)加上 ''單引號(hào),表明不允許加單引號(hào)(但是反引號(hào)``是可以的)

union與union all區(qū)別

1.union all是直接連接,取到得是所有值,記錄可能有重復(fù);union 是取唯一值,記錄沒有重復(fù)。所以u(píng)nion在進(jìn)行表鏈接后會(huì)篩選掉重復(fù)的記錄,union all不會(huì)去除重復(fù)記錄。

2.union將會(huì)按照字段的順序進(jìn)行排序;union all只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回。從效率上說,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è)列上拼接查詢條件了。

模板如下圖

mybatis中foreach嵌套if標(biāo)簽的示例分析

看完了這篇文章,相信你對(duì)“mybatis中foreach嵌套if標(biāo)簽的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI