mybatis 查詢數值狀態值時,數值0導致失效的問題

近期做項目碰到了一個奇怪的問題,大概的需求是這樣的:

pc端在根據狀態值查詢的時候,當選擇狀態值爲0的時候,導致了mybatis 裏sql 狀態值判斷失效,最終走了全查。

原sql:

<select id="selectListByParamFromWeb" resultMap="roadShowResultMap" parameterType="java.util.Map">
    SELECT * FROM ROAD_SHOW WHERE 1=1
    <if test="keyword!=null and keyword!=''">
        AND SHOW_NAME LIKE '%'||#{keyword}||'%'
    </if>
    <if test="showStatus!=null and showStatus!='' and showStatus!=-1">
        AND SHOW_STATUS=#{showStatus}
    </if>
    ORDER BY UPDATE_DATE DESC, CREATE_DATE DESC
</select>

後面諮詢了同事,也在網上搜尋了許久相關資料,最後驗證發現,是【showStatus !=''】這一句搞的鬼,因爲在mybatis中,當【showStatus !=''】時,如果傳入 的showStatus值爲0,判斷返回的也是 true,所以最後的解決方法是,把【showStatus !=''】這一句去掉就可了。

 修改後sql:

<select id="selectListByParamFromWeb" resultMap="roadShowResultMap" parameterType="java.util.Map">
	SELECT * FROM ROAD_SHOW WHERE 1=1
	<if test="keyword!=null and keyword!=''">
		AND SHOW_NAME LIKE '%'||#{keyword}||'%'
	</if>
	<if test="showStatus!=null and showStatus!=-1">
		AND SHOW_STATUS=#{showStatus}
	</if>
	ORDER BY UPDATE_DATE DESC, CREATE_DATE DESC
</select>

 

希望後來的碼友們碰到這個問題時,看到這文篇時,能提供給到一些解決思路,如果能幫到你,麻煩留下你的贊或評論噢~~

 

 

學無止境,生生不息。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章