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

相关推荐
shirsl2 小时前
数据开发每日面试题 Day 5
大数据·数据库·sql·big data
润乾软件3 小时前
SQLazy: 按订单 SKU 条件分配仓库
sql·sqlazy
geovindu3 小时前
sql: Data Modeling Patterns using mysql
sql·mysql·设计模式·数据库开发
这个DBA有点耶4 小时前
AI Agent操作数据库的安全边界:只读沙箱、操作预演与自动回滚如何落地?
数据库·sql·程序人生·aigc·数据库架构·dba
Gl�ria4 小时前
Hive SQL 执行卡住完整排查 & 处理
hive·hadoop·sql
xcLeigh14 小时前
让大模型长出手脚,自己写SQL查数据库(Function Calling初探)
数据库·人工智能·sql·时序数据库·timechoai
干到60岁退休的码农20 小时前
15.创建获取用户接口与JWT认证器
java·spring boot·mybatis
2601_9626802220 小时前
数据分析面试常考的SQL题和业务题分别是哪几类?
sql·面试·数据分析
子非鱼a21 小时前
【SQL注入】 ShadowCart
sql
程序员阿鹏1 天前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存