xml文件接受前端傳入的參數(shù),拼合成完整的sql語句進(jìn)行查詢,有時候不必須的參數(shù)我們使用if test校驗框來篩選:
對于String,如果為null或者為空字符份蝴,則略過
對于int浸卦,如果為null或者0(偶爾也會帶上空字符),則略過萤皂。
今天的bug很隱秘。
前端傳入?yún)?shù),如果是string格式的僚稿,比如a,而if test校驗框中是
<if test="eqAssetStatus!=null and eqAssetStatus!=0">
則會嘗試強制轉(zhuǎn)換string格式到int類型進(jìn)行比較,于是這種情況下就會報錯刹孔。
錯誤信息為:java.lang.NumberFormatException: For input string
將后面的(eqAssetStatus!=0)改為(eqAssetType!='')
即可正確校驗String格式的參數(shù)畦戒。
所以要確認(rèn)不同的參數(shù)其類型纵潦,這樣對應(yīng)不同的if test校驗框
示例:
ea.status前臺傳入int
ea.type前臺傳入String
下面分別是他們的校驗語句
不同類型參數(shù)對應(yīng)不同校驗方式.png
<if test="eqAssetStatus!=null and eqAssetStatus!=0"> and ea.status=#{eqAssetStatus}</if>
<if test="eqAssetType!=null and eqAssetType!=''"> and ea.type like concat('%',concat(#{eqAssetType},'%'))</if>