在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Java/ MyBatis choose(when, otherwise)標(biāo)簽
Mybatis表關(guān)聯(lián)多對一
MyBatis打印輸出SQL語句
Mybatis表關(guān)聯(lián)一對多
mybaits if標(biāo)簽語句
MyBatis整合Spring MVC
MyBatis動態(tài)SQL語句
MyBatis教程
MyBatis choose(when, otherwise)標(biāo)簽
Mybatis與Spring集成
MyBatis分頁
MyBatis SqlSessionDaoSupport實例
MyBatis where標(biāo)簽語句
Mybatis增刪改查(CURD)
Mybatis接口注解
Mybatis trim標(biāo)簽
Mybatis set標(biāo)簽
Mybatis 多對多
MyBatis環(huán)境配置及入門

MyBatis choose(when, otherwise)標(biāo)簽

choose (when, otherwise)標(biāo)簽

有時候我們并不想應(yīng)用所有的條件,而只是想從多個選項中選擇一個。而使用if標(biāo)簽時,只要test中的表達(dá)式為 true,就會執(zhí)行 if 標(biāo)簽中的條件。MyBatis 提供了 choose 元素。if標(biāo)簽是與(and)的關(guān)系,而 choose 是或(or)的關(guān)系。

choose標(biāo)簽是按順序判斷其內(nèi)部when標(biāo)簽中的test條件出否成立,如果有一個成立,則 choose 結(jié)束。當(dāng) choose 中所有 when 的條件都不滿則時,則執(zhí)行 otherwise 中的sql。類似于Java 的 switch 語句,choose 為 switch,when 為 case,otherwise 則為 default。

例如下面例子,同樣把所有可以限制的條件都寫上,方面使用。choose會從上到下選擇一個when標(biāo)簽的test為true的sql執(zhí)行。安全考慮,我們使用where將choose包起來,放置關(guān)鍵字多于錯誤。

<!--  choose(判斷參數(shù)) - 按順序?qū)嶓w類 User 第一個不為空的屬性作為:where條件 -->  
<select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User">  
    SELECT *  
      FROM User u   
    <where>  
        <choose>  
            <when test="username !=null ">  
                u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')  
            </when >  
            <when test="sex != null and sex != '' ">  
                AND u.sex = #{sex, jdbcType=INTEGER}  
            </when >  
            <when test="birthday != null ">  
                AND u.birthday = #{birthday, jdbcType=DATE}  
            </when >  
            <otherwise>  
            </otherwise>  
        </choose>  
    </where>    
</select>  

choose (when,otherwize) ,相當(dāng)于java 語言中的 switch ,與 jstl 中 的 choose 很類似。

<select id="dynamicChooseTest" parameterType="Blog" resultType="Blog">
        select * from t_blog where 1 = 1 
        <choose>
            <when test="title != null">
                and title = #{title}
            </when>
            <when test="content != null">
                and content = #{content}
            </when>
            <otherwise>
                and owner = "owner1"
            </otherwise>
        </choose>
    </select>

when元素表示當(dāng) when 中的條件滿足的時候就輸出其中的內(nèi)容,跟 JAVA 中的 switch 效果差不多的是按照條件的順序,當(dāng) when 中有條件滿足的時候,就會跳出 choose,即所有的 when 和 otherwise 條件中,只有一個會輸出,當(dāng)所有的我很條件都不滿足的時候就輸出 otherwise 中的內(nèi)容。所以上述語句的意思非常簡單, 當(dāng) title!=null 的時候就輸出 and titlte = #{title},不再往下判斷條件,當(dāng)title為空且 content!=null 的時候就輸出 and content = #{content},當(dāng)所有條件都不滿足的時候就輸出 otherwise 中的內(nèi)容。