mybatis if test条件判断语句中 的判断问题

写这个主要是描述在mybatis中要注意的问题,很不幸,自己没注意,跳坑了。

我在mybatis中定义的sql语句如下:


				and z.serviceCount = 1
				
			
				and z.serviceCount = 0
			

可以看到这里只是对传入参数一个简单的判断。

controller层传入一个Integer类型的facilityOccupied参数。

表面上看没什么问题,当传入facilityOccupied = 1,测试结果很意外,它查询了所有的结果,也就是说它没有符合这个判断facilityOccupied == 1 。

换一种写法,在controller层中将传入参数facilityOccupied改为String类型的,通过查询结果可以看出它符合facilityOccupied == 1 这个判断条件。

或使用equals()


				and z.serviceCount = 1
				
			
				and z.serviceCount = 0
			

所以,总结起来怎么说,在这个地方比较的并不是数值大小,而是物理地址,这个双引号里面的1不是int类型也不是integer类型,而是String字符串类型,啊多么痛的领悟。

补充一下,test中eq 和 == 效果一样,比较的是地址,所以比较值最好使用equals()。

你可能感兴趣的:(蛇皮怪集中营)