Mybatis xml动态SQL 判断失效问题

1、问题描述

在xml中查询语句通常会用到if test判断实现动态SQL查询,但是当判断等于的时候一个符号之差会导致动态SQL失效,从而直接拼装上SQL语句。

2、示例

bash 复制代码
<if test="checkFinishStatus!=null and checkFinishStatus = 1">
    and t1.check_status != '0'
</if>

如上所示,如果这样判断的话,会导致即便checkFinishStatus参数不传值,也会将SQL语句拼装上去。因为判断等于 应该用 == 而不是 =。

3、结语

这个可能也是Mybatis的一个BUG,因为我在参数传递值的时候,没有checkFinishStatus这个传参,结果因为等于符号的问题,直接拼装了SQL,导致找了半天问题所在才发现。

相关推荐
山峰哥10 小时前
SQL性能飞跃:从索引策略到查询优化的全链路实战指南
数据库·sql·性能优化·深度优先
fy1216310 小时前
【SQL】写SQL查询时,常用到的日期函数
数据库·sql
1.14(java)10 小时前
MyBatis 操作数据库
数据库·mybatis
eSsO KERF11 小时前
使用 Logback 的最佳实践:`logback.xml` 与 `logback-spring.xml` 的区别与用法
xml·spring·logback
wuyikeer11 小时前
如何在docker中的mysql容器内执行命令与执行SQL文件
sql·mysql·docker
孟意昶13 小时前
Doris专题28-聚合多维分析
大数据·数据库·数据仓库·sql·doris
七夜zippoe1 天前
DolphinDB SQL查询:从基础到进阶
数据库·sql·进阶·聚合·dolphindb
麻辣璐璐1 天前
EditText属性运用之适配RTL语言和LTR语言的输入习惯
android·xml·java·开发语言·安卓
爪洼传承人1 天前
AI工具MCP的配置,慢sql优化
android·数据库·sql
Aloudata1 天前
PL/SQL 存储过程血缘解析指南:攻克数据治理的「最后堡垒」
数据库·sql·数据治理·数据管理·元数据·数据血缘