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

相关推荐
张人玉37 分钟前
SQLite 快速入门 Cheat Sheet
数据库·sql·sqlite
DarkAthena1 小时前
【DuckDB】活用marco以兼容GaussDB的SQL执行
数据库·sql·duckdb
q***96581 小时前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
x***01061 小时前
SQL 注入漏洞原理以及修复方法
网络·数据库·sql
q***31893 小时前
mysql 迁移达梦数据库出现的 sql 语法问题 以及迁移方案
数据库·sql·mysql
p***93033 小时前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
chxii4 小时前
在 MyBatis 中开启 SQL 日志
java·数据库·mybatis
Gauss松鼠会4 小时前
【openGauss】OPENGAUSS/POSTGRESQL 中float类型到int类型的隐式转换
数据库·sql·database·opengauss
x***J34816 小时前
SQL视图使用
数据库·sql