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

相关推荐
木木子999936 分钟前
SQL138 连续两次作答试卷的最大时间窗
sql·题解记录
抛砖者1 小时前
hive/spark sql中unix_timestamp 函数的坑以及时间戳相关的转换
hive·sql·spark
代码的余温3 小时前
Logback.xml配置详解与实战指南
xml·logback
不像程序员的程序媛5 小时前
redis的一些疑问
java·redis·mybatis
野犬寒鸦8 小时前
MyBatis-Plus 中使用 Wrapper 自定义 SQL
java·数据库·后端·sql·mybatis
~ 小团子10 小时前
每日一SQL 【游戏玩法分析 IV】
数据库·sql·游戏
代码的余温16 小时前
MyBatis集成Logback日志全攻略
java·tomcat·mybatis·logback
wen's18 小时前
React Native安卓刘海屏适配终极方案:仅需修改 AndroidManifest.xml!
android·xml·react native
尽兴-1 天前
如何将多个.sql文件合并成一个:Windows和Linux/Mac详细指南
linux·数据库·windows·sql·macos
sniper_fandc1 天前
SpringBoot系列—MyBatis(xml使用)
java·spring boot·mybatis