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

相关推荐
小马爱打代码14 小时前
MyBatis:反射模块详解
mybatis
BD_Marathon14 小时前
动态SQL(六)foreach标签2
数据库·sql
IT大白14 小时前
1、一条SQL是如何执行的
数据库·sql
独自破碎E15 小时前
MySQL中如何进行SQL调优?
数据库·sql·mysql
一名机电研究生16 小时前
电机驱动系统智能监测与故障预测技术指南:构建数据驱动的预防性维护体系
python·sql·诊断预测
拾起零碎17 小时前
U8/对比一级科目,快速判断需要调整的报表
sql
l1t18 小时前
净化SQL的PL/pgSQL函数
数据库·sql·postgresql
Hello.Reader18 小时前
Flink MongoDB SQL Connector Scan/Lookup/Sink 全打通,Upsert、分片集群与缓存一篇讲透
sql·mongodb·flink
Mr_Xuhhh18 小时前
存储过程和触发器的总结
sql
熬夜敲代码的小N19 小时前
MySQL数据可视化实战:从SQL雕琢到图表绽放
sql·mysql·信息可视化