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

相关推荐
TE-茶叶蛋4 小时前
DBeaver 的Explain 执行计划,分析sql的性能
数据库·sql
麦聪聊数据6 小时前
数据 API 平台选型:深度解读数据服务的四大关键技术与架构底座
数据库·sql
拾起零碎10 小时前
U8/材料出库单触发器,有条件的修改出库类别
sql
IronMurphy10 小时前
Redis拷打第三讲
数据库·redis·mybatis
敲代码的嘎仔10 小时前
力扣高频SQL基础50题详解
开发语言·数据库·笔记·sql·算法·leetcode·后端开发
小坏讲微服务11 小时前
SpringBoot4.0整合Spring Security+MyBatis Plus完整权限框架实现
java·spring·mybatis·spring security·mybatis plus·springboot4.0
TE-茶叶蛋12 小时前
sql优化思维
数据库·sql
打小就很皮...13 小时前
基于 Python + LangChain + SQL 生成自动查询数据实战
数据库·sql·langchain
这个DBA有点耶13 小时前
某银行核心系统从Oracle迁移到国产数据库全程复盘(DBA视角)
数据库·经验分享·sql·oracle·dba·智能硬件
只可远观15 小时前
Android XML命令式和Jetpack Compose声明式UI
android·xml