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

相关推荐
呆萌很5 小时前
达梦(DM8)数据库常用SQL
数据库·sql
跟太阳说早安5 小时前
极简数据库SQL
数据库·sql
凤凰院凶涛QAQ7 小时前
《MySQL内核拆解:从SQL到InnoDB》(三) : 数据库设计 & 聚合查询 & 分组查询
数据库·sql·mysql
Decay__8 小时前
01_MySQL 体系架构全解 —— 连接层、SQL 层、存储引擎层与 InnoDB 深入
运维·数据库·sql·mysql·架构
郭小李8 小时前
mybatis的 Mapper.xml语法
xml·java·mybatis
步行cgn9 小时前
为什么既要 web.xml 又要 springmvc.xml?能不能只配一个?
xml·前端·hive
m0_639906949 小时前
MyBatis 实现分页查询|逻辑分页、物理分页、PageHelper 原理
mybatis
captain37621 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
liminla!1 天前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法
l1t1 天前
DeepSeek总结的五分钟测试:Ted Dunning 谈 DuckDB 为何让分析更轻松
数据库·sql·duckdb