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

相关推荐
hello 早上好8 小时前
深入 Spring 依赖注入底层原理
数据库·sql·spring
Lucky_Turtle9 小时前
【Java Xml】Apache Commons Digester3解析
xml·java·apache
龙猫蓝图10 小时前
wrapper+ xml文件进行SQL编写
mybatis
ss27312 小时前
手写MyBatis第104弹:SqlSession从工厂构建到执行器选择的深度剖析
java·开发语言·后端·mybatis
莫陌尛.14 小时前
xml 方式声明式事务案例
xml
kakacc:15 小时前
记录一次巧妙的SQL:一对多关联导致的 sum () 、count()等group函数重复计算问题
数据库·sql
一路向北_Coding18 小时前
MyBatis Generator让你优雅的写SQL
mysql·mybatis
武子康19 小时前
Java-148 深入浅出 MongoDB 聚合操作:$match、$group、$project、$sort 全面解析 Pipeline 实例详解与性能优化
java·数据库·sql·mongodb·性能优化·系统架构·nosql
莫陌尛.19 小时前
SSM(Spring+SpringMVC+Mybatis)整合
java·spring·mybatis
IT 小阿姨(数据库)19 小时前
PostgreSQL etcd 集群介绍
运维·数据库·sql·postgresql·centos·etcd