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 小时前
MySQL数据更新操作
数据库·sql
二哈喇子!8 小时前
MySQL命令行导入数据库
数据库·sql·mysql·vs code
sin22018 小时前
MyBatis的执行流程
java·开发语言·mybatis
学习中的DGR9 小时前
[GXYCTF2019]Ping Ping Ping 1和[SUCTF 2019]EasySQL 1新手解题过程
sql·安全·web安全·网络安全·php
高山上有一只小老虎11 小时前
mybatisplus实现分页查询
java·spring boot·mybatis
独自破碎E16 小时前
MyBatis Flex和MyBatis Plus的区别
java·开发语言·mybatis
田猿笔记16 小时前
用 PRQL 写查询,告别“SQL 咒语”:更简洁、可读、可组合的现代查询语言
sql
小北方城市网16 小时前
MySQL 索引优化实战:从慢查询到高性能
数据库·spring boot·后端·mysql·rabbitmq·mybatis·java-rabbitmq
l1t16 小时前
DeepSeek对AliSQL 集成 DuckDB 的总结
数据库·sql·mysql·duckdb
踢足球092918 小时前
寒假打卡:2026-01-22
数据库·sql