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

相关推荐
Csvn2 小时前
📊 SQL 入门 Day 18:索引原理
后端·sql
DBA小马哥2 小时前
关系型数据库核心概念手册:SQL、事务与存储引擎的技术脉络
数据库·sql
灯澜忆梦3 小时前
【MySQL12】进阶篇 | SQL优化
数据库·sql·mysql·性能优化
步行cgn8 小时前
错误:Invalid bound statement (not found) 详解与解决方案
mybatis
盗理者9 小时前
AI Agent 技能分享|SQL 性能诊断与优化
java·sql·spring·skill
上海云盾商务经理杨杨12 小时前
SQL 盲注入渗透实战!无报错页面也能成功注入
数据库·sql
han_hanker12 小时前
SQL语法 一个统计的查询
sql
竹枝溪14 小时前
MySQL数据库零基础入门
数据库·sql·mysql·navicat·ddl·dml·dql
sugar__salt15 小时前
MyBatis-Plus 从入门到实战:高效简化数据库开发的完整指南
数据库·spring boot·mybatis·数据库开发
smilejingwei1 天前
CodeBuddy+SQLazy 编写复杂 SQL 详解
sql·codebuddy·sqlazy