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

相关推荐
故渊ZY4 分钟前
MyBatis事务原理与实战指南
java·mybatis
墨者阳5 分钟前
数据库的自我修炼
数据库·sql·缓存·性能优化
长安er2 小时前
LeetCode 62/64/5/1143多维动态规划核心题型总结
算法·leetcode·mybatis·动态规划
小韩博3 小时前
小迪第42课:PHP应用&MYSQL架构&SQL注入&跨库查询&文件读写&权限操作
sql·mysql·网络安全·架构·php
dazhong20124 小时前
Mybatis 敏感数据加解密插件完整实现方案
java·数据库·mybatis
猫豆~6 小时前
Ansible自动运维——6day
linux·数据库·sql·缓存·云计算
努力的小郑7 小时前
MyBatis 两个隐蔽深坑实录:Arrays.asList() 与数字 0 的“离奇失踪”
java·面试·mybatis
last_zhiyin7 小时前
Oracle sql tuning guide 翻译 Part 4-1 --- 连接操作(Joins)
数据库·sql·oracle
-suiyuan-7 小时前
sqli-labs靶场1~2笔记
数据库·sql
爱好读书8 小时前
AI生成ER图|SQL生成ER图
数据库·人工智能·sql·毕业设计·课程设计