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

相关推荐
期待のcode2 分钟前
MyBatis-Plus通用Service
java·后端·mybatis·springboot
无名小卒~≯1 小时前
mybatis重复查询导致内存地址相同bug
bug·mybatis
小二·2 小时前
MyBatis入门:环境搭建
mybatis
l1t2 小时前
三种用SQL解决Advent of Code 2022第8题 树顶木屋 的比较和分析
数据库·sql·oracle·duckdb·advent of code
杨云龙UP3 小时前
SQL Server小技巧:用 SSMS 重置登录密码,不影响正在运行的系统
运维·服务器·数据库·sql·sqlserver
小小哭包3 小时前
Spring+MyBatis实现数据库读写分离方案
数据库·spring·mybatis
Hello.Reader3 小时前
Flink SQL 中的 OVER 聚合——为每一行算“窗口统计
数据库·sql·flink
Loiioฅ4 小时前
ctfshow-web入门-sql注入-171-186
数据库·sql
Andy工程师4 小时前
logback-spring.xml优先级更高
xml·spring·logback
思成不止于此4 小时前
【MySQL 零基础入门】DML 核心语法全解析:表数据的增删改操作篇
数据库·笔记·sql·学习·mysql