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

相关推荐
曹牧6 小时前
SQL:多个事务同时修改同一索引块
数据库·sql
lzhdim7 小时前
SQL 入门 12:SQL 视图:创建、修改与可更新视图
java·大数据·服务器·数据库·sql
@小柯555m9 小时前
MySql(高级操作符--操作符混合运用)
数据库·sql·mysql
@小柯555m16 小时前
MySql(高级操作符--Where in 和Not in)
数据库·sql·mysql
小的~~17 小时前
Milvus会存在SQL注入攻击吗?
数据库·sql·milvus
许彰午17 小时前
CacheSQL(三):双 HTTP 引擎与 SQL 查询——接口抽象的价值
java·数据库·sql·缓存
misL NITL1 天前
idea、mybatis报错Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
tomcat·intellij-idea·mybatis
俺不要写代码1 天前
数据库:DQL
数据库·sql·mysql
是宇写的啊2 天前
MyBatis-Plus
java·开发语言·mybatis
uElY ITER2 天前
MySQL 中如何进行 SQL 调优
android·sql·mysql