MyBatis多个if嵌套没进条件原因分析

本文分析了在MyBatis中遇到的一个问题:多个if标签嵌套时,条件没有生效且参数值意外改变。通过检查执行的SQL和确认参数存在,发现是由于在OGNL表达式中误将条件判断写为赋值操作,即`= `代替了`==`。解决办法是将逻辑移到业务层,并新增DAO方法。进一步了解,可以查阅MyBatis的if-test属性相关文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis多个if嵌套竟然没进条件,而且还出现了参数的值改变的事情。

看执行的sql语句,参数正确,第三个参数不应该为空。

确认参数是否存在,存在

可以看到确实奇怪。因为时间急任务重,当时的解决方案是将判断的逻辑放逻辑层了,添加Dao层方法。

现在再看,知悉if test中使用的是 OGNL ,之前 if 中多用 != ,不知道判断等于是 ==,写成了 = 造成这个问题。

可看源码:

更多参看:

mybatis 中 if-test 判断详解_xinlianluohan的博客-优快云博客_mybatis test判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值