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

相关推荐
瀚高PG实验室37 分钟前
ETL中,分区表子表未及时收集统计信息,导致sql执行耗时很长
数据库·数据仓库·sql·etl·瀚高数据库
计算机学姐1 小时前
基于SpringBoot的高校竞赛管理系统
java·spring boot·后端·spring·信息可视化·tomcat·mybatis
星川水月1 小时前
SQL 开窗函数排序详解
数据库·sql
VIV-1 小时前
医院病房管理系统的数据库设计(SQL Server)
数据库·sql·sqlserver
小糊涂灬1 小时前
Mybatis+mysql 一对多查询问题
mysql·mybatis
一定要AK1 小时前
MyBatis 从入门到精通
mybatis
摆烂z3 小时前
spEL语法替换sql值
java·数据库·sql
AKA__Zas3 小时前
SQL查询技巧全 Strategy Guide
数据库·sql·学习方法
96773 小时前
mybatis的作用+sql怎么写
java·开发语言·mybatis
不会写DN4 小时前
SQL 数据定义(DDL)全解
数据库·sql