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

相关推荐
敲敲敲-敲代码43 分钟前
【SQL实验】视图操作(菜单操作和命令操作)
数据库·sql·sqlserver
Mr.Pascal2 小时前
CTF-Hub SQL 字符型注入(纯手动注入)
sql·web安全
Mephisto.java3 小时前
【大数据学习 | flume】flume Sink Processors与拦截器Interceptor
大数据·sql·oracle·sqlite·json·flume
武子康4 小时前
Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段
java·sql·设计模式·架构·mybatis·代理模式
2的n次方_6 小时前
MyBatis——#{} 和 ${} 的区别和动态 SQL
数据库·sql·mybatis
旧故新长7 小时前
注解用于从 HTTP 请求中提取数据
数据库·sql
常在士心10 小时前
常用的SQL语句
sql·sqlite
jokerest12310 小时前
web——sqliabs靶场——第十二关——(基于错误的双引号 POST 型字符型变形的注入)
数据库·sql·mybatis
天蓝蓝2352811 小时前
Lucene数据写入流程
java·mybatis·lucene
码上一元11 小时前
Wireshark 分析SQL 批量插入慢的问题
sql·测试工具·wireshark