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

相关推荐
StarRocks_labs5 小时前
StarRocks I/O 模型揭秘(一):查询是如何被拆解与调度的?
starrocks·sql·pipeline·mpp·fe
cTz6FE7gA5 小时前
XSS、CSRF、SQL注入、防重放与敏感数据保护的分层策略
sql·xss·csrf
升职佳兴5 小时前
SQL 进阶4:查询从未下单的用户与 NOT EXISTS 完整解析
数据库·sql
计算机学姐6 小时前
基于SpringBoot的高校餐饮档口管理系统
java·vue.js·spring boot·后端·spring·intellij-idea·mybatis
wregjru6 小时前
【MySQL】4. 数据约束详解
数据库·sql·oracle
问道飞鱼7 小时前
【数据库相关】MySQL全分类SQL详解(超多数据类型+全约束+实战落地)
数据库·sql·mysql·范例
身如柳絮随风扬8 小时前
MyBatis-Plus与PageHelper分页方案对比
mybatis
罗山仔8 小时前
【Vertx构建异步响应式reactive mybatis,mybatis-vertx-adaptor】
mybatis·orm·异步·reactive·响应式·webflux·vertx
java1234_小锋21 小时前
Java高频面试题:如何编写一个MyBatis插件?
java·开发语言·mybatis
fe7tQnVan21 小时前
MyBatis-动态sql与高级映射
数据库·sql·mybatis