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

相关推荐
卓码软件测评31 分钟前
CMA/CNAS软件测评机构:【Gatling数据库性能关联测试JDBC连接和SQL执行时间监控】
数据库·sql·测试工具·性能优化·测试用例
hid646637221 小时前
基于改进粒子群算法的无人机三维路径规划——MATLAB运行效果图
sql
guoyiguang21 小时前
mysql in 查询 没有限制1000个,默认是sql大小4M大小
数据库·sql·mysql
Hello.Reader2 小时前
Flink SQL 的 USE / USE CATALOG / USE MODULES(Catalog、Database、Module 三件套)
数据库·sql·flink
ii_best2 小时前
「安卓开发辅助工具按键精灵」xml全分辨率插件jsd插件脚本教程
android·xml·开发语言·编辑器·安卓
总会落叶2 小时前
MyBatis XML映射配置与日志系统全解析
xml·tomcat·mybatis
drebander2 小时前
macOS 下优雅管理 Maven:多版本切换 + settings.xml 自动切换(zsh-only 实战)
xml·maven
Apex Predator2 小时前
【无标题】
sql
猫豆~2 小时前
ceph分布式存储——1day
java·linux·数据库·sql·云计算
Hello.Reader3 小时前
Flink SQL「SHOW / SHOW CREATE」元数据巡检、DDL 复刻与排障速查(含 Java 示例)
java·sql·flink