MyBatis解析<if>动态sql时,Integer类型值为0,返回false
Posted 默辨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis解析<if>动态sql时,Integer类型值为0,返回false相关的知识,希望对你有一定的参考价值。
踩坑日记,内容如题
如题,MyBatis中如果参数类型为Integer,并且参数的值为0,那么动态SQL在判断下面条件的时候,返回为false
<if test="money != null and money != ''">
解决办法,去掉判断字符串为 ‘’ 的情况即可
<if test="money != null">
补充
MyBatis源码的位置,肯定是解析动态SQL的位置,所以我们可以直接定位到IfSqlNode类中
然后就是Ognl表达式的解析流程了(本人调试了一会,没调试出来,后期有时间再调试补充完全)
以上是关于MyBatis解析<if>动态sql时,Integer类型值为0,返回false的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis -- 动态Sql概述动态Sql之<if>(包含<where>)动态Sql之<foreach>sql片段抽取