MyBatis的動態SQL是指對sql語句進行靈活操作;它是基於OGNL表達式,透過if,choose,when,otherwise,trim,where,set,foreach標籤,對SQL語句進行靈活拼接、組裝,進而提高開發人員的效率。
什麼是動態SQL? 動態SQL有什麼作用?
mybatis核心 對sql語句進行靈活操作,透過表達式進行判斷,對sql進行靈活拼接、組裝。
傳統的使用JDBC的方法,相信大家在組合複雜的的SQL語句的時候,需要去拼接,稍不注意哪怕少了個空格,都會導致錯誤。 Mybatis的動態SQL功能正是為了解決這個問題, 其透過if, choose, when, otherwise, trim, where, set, foreach標籤,可組合成非常靈活的SQL語句,從而提高開發人員的效率
MyBatis透過OGNL 來進行動態SQL 的使用的。
目前, 動態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中文網其他相關文章!