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,导致找了半天问题所在才发现。

相关推荐
吴声子夜歌2 小时前
SQL进阶——HAVING子句
数据库·sql
折哥的程序人生 · 物流技术专研2 小时前
Java面试通关⑩:MyBatis核心源码全集
mybatis·校招·java面试·orm框架·源码解析·数据库交互·社招
吴声子夜歌4 小时前
SQL进阶——EXISTS谓词
java·数据库·sql
风中芦苇啊13 小时前
从直接生成到受控配置:新一代图表Agent的SQL安全生成范式
数据库·sql·安全
吴声子夜歌13 小时前
SQL进阶——窗口函数
数据库·sql
ClouGence17 小时前
SQL Server CDC 如何降低主库压力?Always On 备库读取实践
数据库·后端·sql·sqlserver
SeeYa-J21 小时前
MyBatis(数据持久层,❗ “接口 = SQL执行器”)
mybatis
吴声子夜歌21 小时前
SQL进阶——自连接
数据库·sql
云贝教育-郑老师21 小时前
TDSQL(MySQL版)分布式事务实现机制深度解析:从两阶段提交到全局一致性读
数据库·sql
_陈陆亮1 天前
MySQL 运维高频 SQL:一条语句快速定位长事务与锁阻塞
运维·sql·mysql