1. 程式人生 > >mybatis中if標籤判斷字串相等

mybatis中if標籤判斷字串相等

今日按需求在mapper.xml中修改完一條sql的條件,感覺很輕鬆,如下所示:
<if test="companyId != null and companyId !='' ">  
<if test="companyFlag == '1'">   
AND COMPANY_ID = #{companyId,jdbcType=VARCHAR}  
</if>  
<if test="companyFlag == '0'">   
AND COMPANY_ID != #{companyId,jdbcType=VARCHAR}  
</if> 
</if>

結果sql執行的結果卻讓我輕鬆不起來,明明companyId和companyFlag這兩個欄位不為空,但是在列印的日誌sql中卻沒有這個條件,將上述sql改為如下所示:

<if test="companyId != null and companyId !='' ">  
and 1 = 1
<if test="companyFlag == '1'">   
AND COMPANY_ID = #{companyId,jdbcType=VARCHAR}  
</if>  
<if test="companyFlag == '0'">   
AND COMPANY_ID != #{companyId,jdbcType=VARCHAR}  
</if> 
</if>
執行sql後發現日誌將and 1 = 1 打印出來了,還是沒有COMPANY_ID這個條件,於是意識到是companyFlag的判斷條件出了問題,在網上一頓搜尋後,發現了說明:

mybatis 對映檔案中,if標籤判斷字串相等,兩種方式:因為mybatis對映檔案,是使用的ognl表示式,所以在判斷字串sex變數是否是字串Y的時候使用

<test="sex=='Y'.toString()">或者<test = 'sex== "Y"'>

將自己的sql改為:

<if test="companyId != null and companyId !='' ">  
	<if test="companyFlag == '1'.toString() ">   
		AND COMPANY_ID = #{companyId,jdbcType=VARCHAR}  
	</if>  
	<if test="companyFlag == '0'.toString() ">   
		AND COMPANY_ID != #{companyId,jdbcType=VARCHAR}  
	</if> 
</if>
再次呼叫sql,則條件正常可用了。

相關推薦

mybatisif標籤判斷字串相等問題

mybatis 對映檔案中,if標籤判斷字串sfyx變數是否是字串Y的時候,發現並不管用:   <if test="sfyx=='Y' "> and 1=1 </if>   當時就尋思著可能是字元和字串的問題,改成雙引號試

mybatisif標籤判斷字串相等

今日按需求在mapper.xml中修改完一條sql的條件,感覺很輕鬆,如下所示:<if test="companyId != null and companyId !='' ">  <if test="companyFlag == '1'">  A

Mybatis if標籤判斷字串

在做開發的時候遇到這樣一個問題:當傳入的type的值為y的時候,if判斷內的sql也不會執行。 <if test="type=='y'"> and status = 0 </if> 仔細想想:my

mybatis 對映檔案if標籤判斷字串相等

mybatis 對映檔案中,if標籤判斷字串相等,兩種方式: 因為mybatis對映檔案,是使用的ognl表示式,所以在判斷字串sex變數是否是字串Y的時候, <if test="sex=='Y'.toString()"> <if test = 'sex== "Y"'&g

Mybatisif標籤的整型判斷問題

用mybatis進行資料修改的時候,age屬性沒有賦值,但是我使用update的時候age這個屬性也被修改了。age屬性是一個int型別。 <set>           &

MYBATISif test判斷的注意事項

mybatis中有這樣一個SQL判斷, <if test="status != null and status !='' "> and a.STATUS = #{status,jdbcType=SMALLINT} </if> status是一個Byte型

mybatisif判斷字串

這樣會有問題 <if test=" name=='你好' "> </if> 換成 <if test=' name=="你好" '> </if>

在JSP頁面使用標籤判斷字串長度的問題

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

mybatis if判斷字串相等

<if test=" ids == 1 "> or <if test=" ids == '1'"> 都不行 最後百度到 如下寫法 <if test=" ids == '1'.toString() "> 成功

mybatisif標簽判斷字符串相等問題

batis 強類型語言 問題 是否 解析 myba col 1=1 nbsp mybatis 映射文件中,if標簽判斷字符串sfyx變量是否是字符串Y的時候,發現並不管用: <if test="sfyx==‘Y‘ "> and 1=1 </

strus2 <s:if>標籤 判斷字串

//可以直接判斷後臺傳來的引數 <s:if test="can1 !=null && can1 != '' "> //可以判斷後臺傳來的引數是否包含某些字元 等 <s:if test="can1.contains('#')">

js判斷字串相等使用==

在 javaScript或者jQuery中字串比較沒有equals()方法,要比較兩個字串是否相等可以直接用==或者is()進行判斷。 一段老的js程式碼示例: var items = document

myBatisif test 字串注意事項

錯誤寫法: <if test="userName == 'boshen'"> AND `USER_NAME` = #{userName} </if> 正確寫法:

FreeMarkerif標籤內的判斷條件

FreeMarker中的<#if>標籤除了裡面直接判斷 boolean 型別的變數外,也可以進行表示式判斷,有幾個細節記錄一下 1. 判斷物件是否存在(null) 經常會用到,如果物件 != null 則xxxx,在freemarker中表達比較奇怪,例

mybatis if 標籤 判斷單個字元的不生效,其實這是個坑

需求: <if test="carrier != null and carrier !='' and carrier !='0'"> AND CARRIER = #{carrier} </if>要在carrier欄位不為null,'',和"0

mybatisif判斷無效的問題

常規寫法: <if test="type=='y'"> and status = 0 </if> mybatis是使用的OGNL表示式來進行解析的,在OGNL的表示式中,’y’會被解析成字元,因為java是強型別

Mybatis if標籤判斷數字大小

1、if標籤語法 <select...> SQL語句1 <if test="條件表示式"> SQL語句2 </if> </select> 注意:條件表示式中大於號小於號用 gt,lt <if test=

mybatisif判斷把整數0識別為false(深坑)

1先看mybatis配置檔案<select id="listByParam" resultMap="orderSettlePartnerResultMap" parameterType="com.jd.ept.settlement.domain.settle.Ord

mybatisif判斷

<if test="type >= 0"> type = #{type} </if> 如果這麼寫 不管type是否傳進來值     type都有預設值 0 正確的寫法應該是 <if test="type != null">

struts2 判斷字串相等和其他struts2標籤

在做專案時,需要判斷用struts2標籤來判斷兩個字串是否相等,在查閱了相關資料後,找到了如下方法 正確的寫法如下: <s:if test='#user.userSex == "M"'>男 </s:if> <s:if test='%{#user.userSex == "M