xml文件接受前端传入的参数,拼合成完整的sql语句进行查询,有时候不必须的参数我们使用if test校验框来筛选:
对于String,如果为null或者为空字符,则略过
对于int,如果为null或者0(偶尔也会带上空字符),则略过。
今天的bug很隐秘。
前端传入参数,如果是string格式的,比如a,而if test校验框中是
<if test="eqAssetStatus!=null and eqAssetStatus!=0">
则会尝试强制转换string格式到int类型进行比较,于是这种情况下就会报错。
错误信息为:java.lang.NumberFormatException: For input string
将后面的(eqAssetStatus!=0)改为(eqAssetType!='')
即可正确校验String格式的参数。
所以要确认不同的参数其类型,这样对应不同的if test校验框
示例:
ea.status前台传入int
ea.type前台传入String
下面分别是他们的校验语句
不同类型参数对应不同校验方式.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>
网友评论