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

相关推荐
Lonely丶墨轩31 分钟前
从登录入口窥见架构:一个企业级双Token认证系统的深度拆解
java·数据库·sql
周末吃鱼3 小时前
MySQL CTE:SQL查询新模式
数据库·sql·mysql
木风小助理3 小时前
解读 SQL 累加计算:从传统方法到窗口函数
大数据·数据库·sql
memgLIFE5 小时前
mybatis数据库查询
数据库·oracle·mybatis
drebander6 小时前
MyBatis-Plus saveBatch 在异步线程中事务未提交问题排查与修复
数据库·mybatis
德彪稳坐倒骑驴7 小时前
Hive SQL常遗忘的命令
hive·hadoop·sql
山峰哥8 小时前
3000字深度解析:SQL调优如何让数据库查询效率提升10倍
java·服务器·数据库·sql·性能优化·编辑器
b***59438 小时前
mysql 迁移达梦数据库出现的 sql 语法问题 以及迁移方案
数据库·sql·mysql
super_lzb8 小时前
mybatis拦截器ResultSetHandler详解
java·spring·mybatis·springboot
l1t9 小时前
格式化SQL工具pg_prettify
数据库·sql