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

相关推荐
Schengshuo7 分钟前
SQL 中 COUNT 的用法详解
数据库·sql
杰克尼2 小时前
苍穹外卖--day08
java·数据库·spring boot·mybatis·notepad++
lierenvip2 小时前
SQL 建表语句详解
java·数据库·sql
人间打气筒(Ada)5 小时前
mysql数据库之DDL、DML
运维·数据库·sql·mysql·dba·dml·dql
Predestination王瀞潞6 小时前
3.3-mapper映射文件+数据库实体关系设计:数据库实体关系设计、SQL 连接查询及MyBatis 多表映射
数据库·sql·mybatis
为美好的生活献上中指6 小时前
*Java 沉淀重走长征路*之——《MyBatis与MyBatis-Plus一文打尽!》
java·jvm·maven·mybatis·mybatis-plus
只能是遇见7 小时前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
Je1lyfish8 小时前
CMU15-445 (2026 Spring) Project#2 - B+ Tree
linux·数据结构·数据库·c++·sql·spring·oracle
生产队队长8 小时前
SpringBoot3:ApplicationAvailability监控应用程序可用性状态[官方文档]
java·spring·mybatis
Schengshuo8 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql