在mbatis中使用Xml配置sql語句時,出現了這樣一個問題。當我傳入的參數爲0去做判斷時,mybatis會把參數0當成是空字符串去判斷而引起查詢結果錯誤。下面是我之前配置的sql語句:
<if test="overdueDayTypes!=null and overdueDayTypes!=''">
<if test="overdueDayTypes == 0">
<![CDATA[and bcr.overdue_days<30]]>
</if>
<if test="overdueDayTypes == 1">
<![CDATA[and bcr.overdue_days>=30 and bcr.overdue_days<=90]]>
</if>
<if test="overdueDayTypes == 2">
<![CDATA[and bcr.overdue_days>90]]>
</if>
</if>
對於這個問題,有兩種解決辦法。
1.當傳入的參數有0時,只判斷!=null即可。
2.將0轉化爲String類型,就可以解決這個問題。
下面是我修改後的sql語句:
<if test="overdueDayTypes!=null and overdueDayTypes!='' or overdueDayTypes == '0'.toString()">
<if test="overdueDayTypes == '0'.toString()">
<![CDATA[and bcr.overdue_days<30]]>
</if>
<if test="overdueDayTypes == 1">
<![CDATA[and bcr.overdue_days>=30 and bcr.overdue_days<=90]]>
</if>
<if test="overdueDayTypes == 2">
<![CDATA[and bcr.overdue_days>90]]>
</if>
</if>