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

相关推荐
吴声子夜歌16 小时前
SQL经典实例——元数据查询
数据库·sql
武子康16 小时前
Java-27 深入浅出 Spring - 实现简易Ioc-03 在上节的业务下手动实现IoC 从 XML 配置到 BeanFactory 反射注入
java·后端·mybatis
吴声子夜歌17 小时前
SQL经典实例——处理字符串
数据库·sql
柏舟飞流18 小时前
Spring Boot 进阶实战:整合 MyBatis、Redis、JWT,搭一个更像真实项目的后端服务
spring boot·redis·mybatis
z_鑫21 小时前
深入理解MyBatis:collection集合封装的底层原理与实现细节
java·开发语言·数据库·spring boot·mybatis
罗政1 天前
AI工作流实现Excel自动化+SQL,零 VBA ,零公式,电商订单分析案例 | DTBot
sql·自动化·excel
吴声子夜歌1 天前
SQL经典实例——处理数字
java·数据库·sql
NineData1 天前
日常巡检 Oracle 时,ChatDBA 怎么把会话、SQL 和等待事件一起看
数据库·sql·oracle·ninedata·故障排查·chatdba·实例巡检
吴声子夜歌1 天前
SQL经典实例——使用多张表
数据库·sql
摇滚侠2 天前
MyBatis 入门到项目实战 特殊 SQL 的执行 34-37
java·sql·mybatis