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

相关推荐
HalvmånEver1 小时前
MySQL的增删改查命令合集合集
数据库·sql·oracle
不剪发的Tony老师2 小时前
dblab:一款基于终端的交互式数据库客户端
数据库·sql
夕除3 小时前
springboot--06
数据库·spring boot·mybatis
运维小子4 小时前
JumpServer Applet 发布自定义远程应用:Oracle SQL Developer 自动登录
数据库·sql·oracle·jumpserver
曹牧6 小时前
Oracle:将包含属性(Attributes)的 XML 数据解析为表格数据
xml·数据库·oracle
Java成神之路-7 小时前
MyBatis一级缓存与二级缓存深度解析
mybatis
上海云盾商务经理杨杨7 小时前
Web渗透核心漏洞:SQL注入漏洞测试与修复实战
数据库·sql·安全
身如柳絮随风扬7 小时前
MyBatis 与 Spring 中的设计模式
spring·设计模式·mybatis
Irene19918 小时前
(课堂笔记)游标与动态SQL(EXECUTE IMMEDIATE):使用 CHR(39) 替代拼接单引号
sql
消失的旧时光-19438 小时前
SQL 第四篇:JOIN 实战(数据库到底是怎么“拼表”的)
数据库·sql·mysql