数据库中存储status用Integer(0,1,2)代替具体业务状态,当条件查询status=0时直接返回所有数据,status=1,2均可查出。
"<if test='exeStatus!=null and exeStatus!=\"\"'>",
" and exe_status=#{exeStatus}",
"</if>",
mybatis源码:
首先获取两个判断对象的类型,当拿一个字符串和一个数字判断的时候,
当Mybatis发现,这个字符串是可以转换成数字的,那么就会把这个字符串转成数字,然后再和这个数字判断。
从源码
OgnlOps.compareWithConversion
就可以看出,这个空字符串,是会被转成0的.所以现在一切豁然开朗.
解决:
直接删除 and exeStatus!=\"\" 即可
"<if test='exeStatus!=null '>",
" and exe_status=#{exeStatus}",
"</if>",
参考: