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

相关推荐
zqmattack1 天前
SQL优化与索引策略实战指南
java·数据库·sql
lang201509281 天前
Jackson 1.x到2.x的演进与Spring集成
数据库·sql·spring
BD_Marathon1 天前
自定义映射resultMap——通过collection解决一对多的映射关系(九)
mybatis
码农幻想梦1 天前
实验四 mybatis动态sql及逆向工程
sql·性能优化·mybatis
小北方城市网1 天前
SpringBoot 集成 MyBatis-Plus 实战(高效 CRUD 与复杂查询):简化数据库操作
java·数据库·人工智能·spring boot·后端·安全·mybatis
笃行客从不躺平1 天前
PG SQL 行转列记录
数据库·sql
知识分享小能手1 天前
Oracle 19c入门学习教程,从入门到精通,PL/SQL 编程详解:语法、使用方法与综合案例(6)
sql·学习·oracle
码农幻想梦1 天前
实验三 Mybatis多表查询操作
mybatis
cab51 天前
MyBatis如何处理数据库中的JSON字段
数据库·json·mybatis
山峰哥1 天前
SQL调优实战:让查询效率飙升10倍的降本密码
服务器·前端·数据库·sql·编辑器·深度优先