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

相关推荐
曹轲恒18 分钟前
@PropertySource、@ImportResource、@Bean
java·spring boot·mybatis
写代码的【黑咖啡】4 小时前
Python中的lxml:高效XML处理库
xml·开发语言·python
麦聪聊数据4 小时前
重构数据交付链路:基于 API 网关实现数据工程与业务分析的解耦
数据库·sql
SJLoveIT4 小时前
深度复盘:海量数据下的 SQL 优化与生命周期治理
数据库·sql
TH_14 小时前
37、SQL的Explain
java·数据库·sql
IT大白7 小时前
8、MySQL相关问题补充
数据库·sql
王九思8 小时前
SQL网关 Kyuubi 系列——基本介绍
数据仓库·hive·hadoop·sql·spark
码界奇点8 小时前
深入解析MySQL9主从复制架构详解从原理到实战优化
数据库·sql·架构·可用性测试
麦聪聊数据9 小时前
为何“零信任”时代需要重构数据库访问层?
数据库·sql
程序员侠客行9 小时前
Spring集成Mybatis原理详解
java·后端·spring·架构·mybatis