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

相关推荐
fengxin_rou14 分钟前
[Redis从零到精通|第四篇]:缓存穿透、雪崩、击穿
java·redis·缓存·mybatis·idea·多线程
逍遥德1 小时前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring
驾数者2 小时前
Flink SQL实时数仓实战:基于Flink SQL的完整项目案例
sql·flink·linq
老毛肚10 小时前
MyBatis插件原理及Spring集成
java·spring·mybatis
此刻你14 小时前
常用的 SQL 语句
数据库·sql·oracle
马尔代夫哈哈哈15 小时前
MyBatis 入门与实战:从配置到CRUD一站式指南
mybatis
山岚的运维笔记16 小时前
SQL Server笔记 -- 第14章:CASE语句
数据库·笔记·sql·microsoft·sqlserver
Jul1en_16 小时前
【MyBatis/plus】核心配置、插件与 MyBatis-Plus 构造器 Wrapper
mybatis
中二病码农不会遇见C++学姐18 小时前
SQLiteStudio 下载安装指南
sql