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

相关推荐
昊昊该干饭了13 分钟前
一个真实查询需求如何从表设计走到高效 SQL
数据库·sql
北辰当尹40 分钟前
xml基础
android·xml
Elastic 中国社区官方博客2 小时前
使用瑞士风格哈希表实现更快的 ES|QL 统计
大数据·数据结构·sql·elasticsearch·搜索引擎·全文检索·散列表
进击的CJR2 小时前
redis cluster 部署
java·redis·mybatis
pengweizhong3 小时前
Dynamic‑SQL2 查询篇:MyBatis 增强利器,让 SQL 像写 Java 一样丝滑
java·sql·教程
逍遥德6 小时前
Postgresql 系统表作用解释
数据库·后端·sql·postgresql
SJLoveIT7 小时前
sql注入攻击的防御思路总结
数据库·sql
Geek攻城猫8 小时前
深入理解 SQL 多字段排序:从基础到高级技巧
数据库·sql
BD_Marathon9 小时前
动态SQL(七)sql标签
服务器·sql·性能优化
sunddy_x9 小时前
Spring事务
java·spring·mybatis