先说结论:
<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一下,没试过,感觉应该可行
本文探讨了在使用MyBatis进行数据库操作时,IF标签对于非字符串类型数据的不当处理方式,特别是当整型数据为0时会被误判为空字符串,导致查询条件失效的问题及解决方案。
7126

被折叠的 条评论
为什么被折叠?



