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

相关推荐
zc.z9 小时前
高并发在线考试系统稳定性保障方案
mybatis·高并发
SQL必知必会10 小时前
SQL 删除重复行完全指南
数据库·sql
工业甲酰苯胺10 小时前
spring-事务管理
数据库·sql·spring
gAlAxy...11 小时前
MyBatis-Plus 核心 CRUD 操作全解析:BaseMapper 与通用 Service 实战
java·开发语言·mybatis
Amarantine、沐风倩✨12 小时前
列表接口严禁嵌套 LISTAGG + REGEXP:一次 mission_label 性能事故复盘
java·数据库·sql
好好研究12 小时前
MyBatis - Plus(二)常见注解 + 常见配置
数据库·spring boot·mybatis·mybatis plus
树码小子14 小时前
Mybatis(8)#{}和${}的区别,排序,模糊查询
mybatis
德育处主任Pro17 小时前
『n8n』不用写SQL,了解一下内置的Datatable
数据库·sql
MX_935917 小时前
Spring xml 方式整合第三方框架总结加案例
xml·java·spring
NineData17 小时前
NineData 社区版 V4.9.0 发布!支持应用切换能力以降低迁移风险,慢查询新增外部采集来源
数据库·sql·ninedata·社区版·v4.9.0·sql开发工具·navicat平替