先说结论:
<if>标签中,对于非字符串类型的数据,无需判断 != ‘’,否则返回结果为false
今天改代码过滤查询结果的时候有一个输入的参数是0,然后这句话失效了
本来以为是params没有拿到这个值,或者数据库查询有问题,结果debug发现params里面获取到了,数据库直接查询的结果也没有问题
但是MyBatis Log插件上的记录里查询条件并没有equipmentType这一条件,于是把问题锁定在了mapper文件上
就是这句话
<if test="equipmentType != null and equipmentType != ''"> and tem.equipment_type = #{equipmentType}</if>
把<if>标签的内容删掉之后可以正常查询,所以是<if>标签的问题…
整型数据(Integer ,int)值为0时在if标签中会判断为空字符串,if标签值为false,查询条件不生效
<if test="equipmentType != null"> and tem.equipment_type = #{equipmentType}</if>
尝试之后,删掉判断为 != ‘’ 就行
或者,,在添加查询条件的时候把参数toString一下,没试过,感觉应该可行