写这个主要是描述在mybatis中要注意的问题,很不幸,自己没注意,跳坑了。
我在mybatis中定义的sql语句如下:
<if test="facilityOccupied != null and facilityOccupied != '' and facilityOccupied == 1 ">
and z.serviceCount = 1
</if>
<if test="facilityOccupied != null and facilityOccupied != '' and facilityOccupied == 0 ">
and z.serviceCount = 0
</if>
可以看到这里只是对传入参数一个简单的判断。
controller层传入一个Integer类型的facilityOccupied参数。
表面上看没什么问题,当传入facilityOccupied = 1,测试结果很意外,它查询了所有的结果,也就是说它没有符合这个判断facilityOccupied == 1 。
换一种写法,在controller层中将传入参数facilityOccupied改为String类型的,通过查询结果可以看出它符合facilityOccupied == 1 这个判断条件。
所以,总结起来怎么说,在这个地方比较的并不是数值大小,而是物理地址,这个双引号里面的1不是int类型也不是integer类型,而是String字符串类型,啊多么痛的领悟。