MyBatis解析<if>动态sql时,Integer类型值为0,返回false

阅读 58

2023-01-19


踩坑日记,内容如题


如题,MyBatis中如果参数类型为Integer,并且参数的值为0,那么动态SQL在判断下面条件的时候,返回为false

<if test="money != null and money != ''">


解决办法,去掉判断字符串为 ‘’ 的情况即可

<if test="money != null">


补充

MyBatis源码的位置,肯定是解析动态SQL的位置,所以我们可以直接定位到IfSqlNode类中



MyBatis解析<if>动态sql时,Integer类型值为0,返回false_字符串


然后就是Ognl表达式的解析流程了(本人调试了一会,没调试出来,后期有时间再调试补充完全)



MyBatis解析<if>动态sql时,Integer类型值为0,返回false_开发语言_02


MyBatis解析<if>动态sql时,Integer类型值为0,返回false_SQL_03


精彩评论(0)

0 0 举报