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

相关推荐
山峰哥7 小时前
SQL慢查询调优实战:从全表扫描到索引覆盖的完整复盘
前端·数据库·sql·性能优化
hhb_61810 小时前
PL/SQL核心技术难点梳理与实战应用案例解析
数据库·sql
TDengine (老段)12 小时前
TDengine 一条 SQL 从客户端到执行完成的全链路
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据
码云骑士14 小时前
MyBatis-Plus从入门到实战,Lambda查询+注解配置+SpringBoot整合全解析
mybatis
唐青枫15 小时前
别只会写 IF:MySQL CASE WHEN 条件判断实战详解
sql·mysql
IronMurphy17 小时前
Redis拷打第六讲
redis·spring·mybatis
zhishijike17 小时前
全国行政区划sql(省市区)
数据库·sql·mysql
那个失眠的夜17 小时前
SpringBoot
java·开发语言·spring boot·spring·mvc·mybatis
阳光九叶草LXGZXJ18 小时前
达梦数据库-学习-52-DmDrs参数介绍(Manager模块)
linux·运维·数据库·sql·学习
接着奏乐接着舞19 小时前
springboot mybatis
spring·tomcat·mybatis