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

相关推荐
少年攻城狮21 分钟前
Mybatis-Plus系列---【自定义拦截器实现sql完整拼接及耗时打印】
数据库·sql·mybatis
迷茫的21世纪的新轻年1 小时前
PostgreSQL——SQL优化
数据库·sql·postgresql
编程修仙1 小时前
第十一篇 Spring事务
xml·java·数据库·spring
清晓粼溪1 小时前
Mybatis02:核心功能
java·mybatis
2301_800256111 小时前
8.3 查询优化 核心知识点总结
大数据·数据库·人工智能·sql·postgresql
SadSunset2 小时前
(13)复杂查询
java·笔记·架构·mybatis
SadSunset3 小时前
(12)基于注解实现的sql
mybatis
金士顿3 小时前
Ethercat耦合器添加的IO导出xml 初始化IO参数
android·xml·java
MM_MS4 小时前
MYSQl数据库详细知识点和在Navicat中的具体操作
开发语言·数据库·sql·mysql·oracle
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ5 小时前
sql计算去除值后面的零
数据库·sql