前因:在写项目得时候,权限查询这块有默认得查询条件,另外这个SQL还有可选的查询条件,当我查询得时候,可选得查询条件没有输入东西,SQL语句却莫名其妙得拼接起来了。反馈确认代码是没啥问题得。
查询条件案例XML
条件里面没有传code这个参数作为条件,但是他却拼接了。
在追踪mybatis源码得时候,发现在前面校验得查询条件会将你定义得变量名,放到一个Map集合中存储,因为我这里定义得变量名是code 所以map里面就会多出来一个code,等在校验下一个查询条件得时候,map中就会存在这个code,导致这个查询条件生效。
解决方案如下:
将code换一个变量名。
这算是mybatis得漏洞还是我们代码书写得不规范 😅