mybatis的 choose -- when test -- otherwise 標籤和 if test 標籤的區別
1.choose標籤是按順序判斷其內部when標籤中的test條件出否成立,如果有一個成立,則 choose 結束。
當 choose 中所有 when 的條件都不滿則時,則執行 otherwise 中的sql。類似於Java 的 switch 語句,choose 為 switch,when 為 case,otherwise 則為 default。例如下面例子,同樣把所有可以限制的條件都寫上,方面使用。choose會從上到下選擇一個when標籤的test為true的sql執行。安全考慮,我們使用where將choose包起來,放置關鍵字多於錯誤。
<!-- choose(判斷引數) - 按順序將實體類 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>
2.if-test 不會跳出判斷語句
2.1 if-test標籤判斷語法:
@see http://blog.csdn.net/z69183787/article/details/51589171
用==判斷時應寫成
<if test='type=="y"'>
and status = 0
</if>
- 1
- 2
- 3
而不是
<if test="type=='y'">
and status = 0
</if>
- 1
- 2
- 3
mybatis是使用的OGNL表示式來進行解析的,在OGNL的表示式中,’y’會被解析成字元,因為java是強型別的,char 和 一個string 會導致不等。所以if標籤中的sql不會被解析。具體的請參照 OGNL 表示式的語法
轉載自:https://blog.csdn.net/sinat_34814635/article/details/78465631
相關文章
- mybatis中 if 標籤 test 等於判斷MyBatis
- MyBatis中的<where>標籤和where子句的區別MyBatis
- MyBatis系列(七):MyBatis動態Sql之choose,where,set標籤的用法MyBatisSQL
- jstl c標籤 ”test does not support runtime expressions“JSExpress
- java <%!%>標籤和<%%>標籤的使用Java
- Mybatis中常用的標籤MyBatis
- MyBatis-動態SQL的if、choose、when、otherwise、trim、where、set、foreach使用MyBatisSQL
- properties標籤和typeAliases標籤
- 標籤的readonly和disabled屬性的區別
- MyBatis foreach標籤MyBatis
- MyBatis從入門到精通(七):MyBatis動態Sql之choose,where,set標籤的用法MyBatisSQL
- HTML標籤(基本標籤的使用)HTML
- Meta標籤中name和http-equiv的區別HTTPUI
- Git tag標籤與branch分支的區別Git
- html中常用的標籤-表格標籤HTML
- HTML5標籤HTMLCollection和NodeList的區別詳解HTML
- Mybatis的 foreach 標籤使用方法.MyBatis
- MyBatis if 標籤的坑,居然被我踩到了。。。MyBatis
- MyBatis學習——foreach標籤的使用MyBatis
- html中常用的標籤-表單標籤HTML
- 標籤上title與alt屬性的區別
- 指標和標籤的基礎理解指標
- link標籤連結CSS和@import載入的區別CSSImport
- Git tag標籤與branch分支 區別Git
- html中常用的標籤-超連結標籤HTML
- CSS和canvas標籤設定畫布尺寸區別CSSCanvas
- Script標籤的async和defer
- 自定義標籤【迭代標籤】薦
- 在a標籤的href與onclick中使用javascript的區別JavaScript
- mybatis中foreach標籤詳解MyBatis
- VOC標籤轉化為YOLO標籤YOLO
- MyBatis標籤實現的動態SQL語句MyBatisSQL
- PbootCMS可使用的列表標籤內容tags標籤呼叫boot
- Mybatis的<if>標籤的坑,0會被過濾掉?MyBatis
- html的基本標籤HTML
- HTML 的常用標籤HTML
- 熟悉的< script >標籤
- html <a>標籤的妙用HTML