首頁  >  文章  >  什麼是mybatis動態sql

什麼是mybatis動態sql

anonymity
anonymity原創
2019-05-09 16:14:4612431瀏覽

MyBatis的動態SQL是指對sql語句進行靈活操作;它是基於OGNL表達式,透過if,choose,when,otherwise,trim,where,set,foreach標籤,對SQL語句進行靈活拼接、組裝,進而提高開發人員的效率。

什麼是mybatis動態sql

什麼是動態SQL? 動態SQL有什麼作用?

mybatis核心 對sql語句進行靈活操作,透過表達式進行判斷,對sql進行靈活拼接、組裝。

傳統的使用JDBC的方法,相信大家在組合複雜的的SQL語句的時候,需要去拼接,稍不注意哪怕少了個空格,都會導致錯誤。 Mybatis的動態SQL功能正是為了解決這個問題, 其透過if, choose, when, otherwise, trim, where, set, foreach標籤,可組合成非常靈活的SQL語句,從而提高開發人員的效率

MyBatis透過OGNL 來進行動態SQL 的使用的。

目前, 動態SQL 支援以下幾個標籤

什麼是mybatis動態sql

# 範例:if語句使用

根據username 和sex 來查詢資料。如果username為空,那麼將只根據sex來查詢;反之只根據username來查詢

#首先不使用動態SQL 來書寫

<select id="selectUserByUsernameAndSex"
        resultType="user" parameterType="com.ys.po.User">
    <!-- 这里和普通的sql 查询语句差不多,对于只有一个参数,后面的 #{id}表示占位符,里面不一定要写id,
            写啥都可以,但是不要空着,如果有多个参数则必须写pojo类里面的属性 -->
    select * from user where username=#{username} and sex=#{sex}
</select>

上面的查詢語句,我們可以發現,如果#{username} 為空,那麼查詢結果也是空,如何解決這個問題?

使用if 來判斷

<select id="selectUserByUsernameAndSex" resultType="user" parameterType="com.ys.po.User">
    select * from user where
        <if test="username != null">
           username=#{username}
        </if>
         
        <if test="username != null">
           and sex=#{sex}
        </if>
</select>

這樣寫我們可以看到,如果sex 等於null,那麼查詢語句為select * from user where username=# {username}

以上是什麼是mybatis動態sql的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn