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

相关推荐
Source.Liu2 小时前
【Uppsala】入口模块(lib.rs)
xml·rust
xqqxqxxq4 小时前
SQL 连接查询技术笔记
数据库·笔记·sql
Databend4 小时前
从万亿级大模型到全线应用:Databend Cloud 助力头部 AI 企业构建全链路 Trace 数据管道
大数据·数据库·sql
ClouGence5 小时前
加一张临时表,OceanBase Oracle 写入居然快了 30 倍!
数据库·sql·oracle
Source.Liu6 小时前
【Uppsala】介绍
xml·rust
不谈恋爱的猫8 小时前
redis哨兵模式
数据库·redis·mybatis
ClouGence8 小时前
CloudDM:开源免费!一站式数据库访问、SQL审核、权限与脱敏管控平台
数据库·sql·开源
l1t9 小时前
kryonix提交的DuckDB 统一并优化标量执行器基础设施 - #24564 PR
开发语言·数据库·数据仓库·sql
Wang's Blog9 小时前
AI Agent白手起家37: LangChain 输出解析器实战:文本、JSON、XML 与 Pydantic
xml·langchain·json