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

相关推荐
不剪发的Tony老师3 小时前
Noir:一款键盘驱动的现代化数据库管理工具
数据库·sql
光泽雨5 小时前
UNION 和 UNION ALL 作用
数据库·sql
heimeiyingwang5 小时前
【架构实战】SQL调优实战:从执行计划到索引优化
数据库·sql·架构
XDHCOM6 小时前
ORA-06521: PL/SQL映射函数错误,权威解析Oracle报错故障修复与远程处理方案
数据库·sql·oracle
数厘6 小时前
2.11 约束的使用(主键、外键、非空、唯一、默认值约束)
sql·mysql·数据分析
大大大大晴天️7 小时前
Flink技术实践-Flink SQL 开发中的隐蔽陷阱
大数据·sql·flink
indexsunny10 小时前
互联网大厂Java面试实战:Spring Boot、MyBatis与Kafka在电商场景中的应用
java·spring boot·面试·kafka·mybatis·电商·技术栈
神の愛12 小时前
mybatis什么时候不走 缓存??
spring·缓存·mybatis
一叶龙洲13 小时前
Java中使用模板引擎(FreeMarker / Velocity) + Word XML导出复杂Word
xml·java·word