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

相关推荐
Hello.Reader17 小时前
Flink JDBC Driver把 Flink SQL Gateway 变成“数据库”,让 BI / 工具 / 应用直接用 JDBC 跑 Flink SQL
数据库·sql·flink
月明长歌17 小时前
怎么把 SQL 的增删改查写成“稳、准、可维护”的
java·数据库·sql
l1t17 小时前
DeepSeek总结的SQL 数独:约束编程
数据库·sql
在风中的意志17 小时前
[数据库SQL] [leetcode-175] 175. 组合两个表
数据库·sql·leetcode
在风中的意志18 小时前
[数据库SQL] [leetcode-183] 183. 从不订购的客户
数据库·sql
在风中的意志18 小时前
[数据库SQL] [leetcode-197] 197. 上升的温度
数据库·sql
鸽芷咕20 小时前
告别适配难题:Oracle 迁移 KingbaseES SQL 语法快速兼容方案
数据库·sql·oracle·金仓数据库
短剑重铸之日1 天前
7天读懂MySQL|Day 5:执行引擎与SQL优化
java·数据库·sql·mysql·架构
飞舞花下1 天前
MAVEN私有仓库配置-Nexus私有仓库
xml·java·maven
爱丽_1 天前
MyBatis事务管理与缓存机制详解
数据库·缓存·mybatis