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

相关推荐
在风中的意志4 小时前
[数据库SQL] [leetcode] 2388. 将表中的空值更改为前一个值
数据库·sql·leetcode
千百元7 小时前
限制网段访问服务器端口63790
java·网络·mybatis
Caarlossss8 小时前
mybatis
java·数据库·tomcat·maven·mybatis·mybatis-spring
在风中的意志8 小时前
[数据库SQL] [leetcode] 578. 查询回答率最高的问题
数据库·sql
liuc03178 小时前
AI下调用redis并调用deepseek
数据库·redis·mybatis
小小荧9 小时前
CSS 写 SQL 查询?后端慌了!
前端·sql
在风中的意志10 小时前
[数据库SQL] [leetcode] 614. 二级关注者
数据库·sql
雨中飘荡的记忆11 小时前
MyBatis缓存模块详解
mybatis
杨云龙UP14 小时前
SQL Server定时自动备份配置:使用SSMS维护计划向导配置数据库每日自动备份_20260101
运维·服务器·数据库·sql·sqlserver·桌面
麦聪聊数据14 小时前
解构“逻辑数据仓库 (LDW)”与数据虚拟化
数据库·数据仓库·sql