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

相关推荐
向阳121816 分钟前
mybatis SqlSessionFactory
java·mybatis
Suwg20921 分钟前
《手写Mybatis渐进式源码实践》实践笔记(第七章 SQL执行器的创建和使用)
java·数据库·笔记·后端·sql·mybatis·模板方法模式
丁总学Java25 分钟前
优化 invite_codes 表的 SQL 创建语句
java·数据库·sql
冰镇毛衣1 小时前
4.5 数据表的外连接
数据库·sql·mysql
秋恬意3 小时前
MyBatis动态 SQL 的执行原理
mybatis
得谷养人3 小时前
flink-1.16 table sql 消费 kafka 数据,指定时间戳位置消费数据报错:Invalid negative offset 问题解决
sql·flink·kafka
小狗蛋ing4 小时前
反编译APK获取xml资源
xml·反编译
青年有志5 小时前
深入浅出 MyBatis | CRUD 操作、配置解析
数据库·tomcat·mybatis
数据的世界015 小时前
SQL创建和操纵表
数据库·sql
00Allen005 小时前
mybatis/mybatisplus
java·spring·mybatis