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

相关推荐
鹿角片ljp4 小时前
从告警检测到智能研判:SQL 注入研判模型的设计与实践
数据库·sql
邮专薛之谦9 小时前
MySQL 完整SQL指令大全(含详细解释+实战示例)
数据库·sql·mysql
YL200404269 小时前
MySQL-进阶篇-SQL优化
数据库·sql·mysql
Mike117.10 小时前
GBase 8c schema 和 search_path 引发的对象定位问题
数据库·sql·oracle
丑八怪大丑11 小时前
SQL新特性
数据库·sql
码农阿豪15 小时前
Go 语言操作金仓数据库(下篇):SQL 执行、类型映射与超时控制
数据库·sql·golang
今天也是元气满满的一天呢16 小时前
20260512-SQL学习大览
数据库·sql·学习
北秋,16 小时前
Web Security Academy 第二关:SQL 注入登录绕过
数据库·sql