MyBatis-Plus XML 中 if 标签单引号与双引号区别、踩坑问题完整讲解

MyBatis/MyBatis-Plus XML 中 `<if test>` 的判断条件本质是 OGNL 表达式,双引号代表字符串常量,单引号代表单个字符常量。常见错误:用 `''` 判断空字符串会导致 OGNL 将两个单引号识别为字符对象,与字符串 `""` 类型不同、恒不相等,造成判断失效;用单引号包裹数字字符会引发类型转换异常;外层用单引号包裹 test 属性虽可行但易混淆。这些错误会引发 SQL 拼接异常、全表扫描、覆盖空值等业务故障。标准规范:统一外层使用双引号 `test=""`;判断空字符串必须用 `!= ""`,禁止 `!= ''`;判断单个字符可用单引号;判断数字或多字符字符串一律用双引号;所有字符串判断同时加 `!= null` 防止空指针。遵循规范可从根源避免引号 BUG,提升 SQL 稳定性与线上数据安全。