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

相关推荐
跨境数据猎手8 小时前
跨境电商系统三大 Web 漏洞的防护:SQL 注入、XSS、CSRF
前端·sql·xss
袋鼠云数栈20 小时前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
程序员老赵21 小时前
Docker 部署 Hue:轻松搭建数据库与数据仓库 SQL 查询平台
sql·docker·开源
梦影_1 天前
MySQL进阶教程(一)—— 储存过程与触发器(上)
开发语言·数据库·后端·sql·mysql·中间件
Vegetable_xu1 天前
Spring Bean 循环依赖:为什么有时能过、有时启动就挂
java·spring·mybatis
花间相见1 天前
【计算基础|MySQL11】事务与隔离级别
sql·mysql·adb·架构
love静思冥想1 天前
CLOB中JSON查询agent字段值(Oracle11g)
sql·oracle·json
geovindu1 天前
sql:Managing Complex Joins and Subqueries in SQL using mysql 9.0
大数据·数据库·数据仓库·sql·mysql·数据库开发·数据库架构
泡海椒1 天前
JQuick-SQL LIMIT 分页:限制行数与偏移查询
数据库·sql
m0_639906941 天前
MyBatis 核心体系:核心接口、动态 SQL 原理、插件底层机制
java·sql·mybatis