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

相关推荐
渣渣盟10 小时前
Flink Table API与SQL流数据处理实战
大数据·sql·flink·scala
mygljx10 小时前
SpringBoot+Mybatis-plus实现分页查询(一看就会)
spring boot·mybatis·状态模式
Rick19931 天前
慢SQL优化
数据库·python·sql
独断万古他化1 天前
【Java 实战项目】多用户网页版聊天室:消息传输模块 —— 基于 WebSocket 实现实时通信
java·spring boot·后端·websocket·ajax·mybatis
我真会写代码1 天前
SpringBoot自动装配原理:告别繁琐配置,读懂底层逻辑
java·spring boot·mybatis
人道领域1 天前
Day | 12 【苍穹外卖 :导出Excel数据表】
java·后端·sql·servlet·mvc·intellij-idea
芒果披萨1 天前
sql实操
数据库·sql·mysql
不剪发的Tony老师1 天前
FlowScope:一款注重隐私的SQL数据血缘分析工具
数据库·sql·数据血缘
xuhaoyu_cpp_java1 天前
XML学习
xml·java·笔记·学习
星马梦缘1 天前
数据库作战记录2
数据库·sql