Mybatis当传入参数为0时,动态sql语句条件不生效
出现问题:在做项目的时,写动态sql语句的一个if时,当`query.isDisk==0判断条件的值为0时,sql拼接就不会生效,查阅资料后,是因为mybatis在传递Integer传的参数时并且值为0时,会将表达式的值视作为空字符串。
<if test="query.isDisk!=null and query.isDisk!= ">
<if test="query.isDisk==1">
AND t1.is_disk IN (1,2)
</if>
<if test="query.isDisk==0">
AND t1.is_disk = #{query.isDisk}
</if>
</if >
解决方法:在判断的表达式中若被判断的数据是Integer类型,是不会出现query.isDisk!= 这样的情况,只有传递值是String时才会需要query.isDisk!=这样的判空条件。那么这样 将判空的条件里去除and query.tel !=即可
<if test="query.isDisk!=null">
<if test="query.isDisk==1">
AND t1.is_disk IN (1,2)
</if>
<if test="query.isDisk==0">
AND t1.is_disk = #{query.isDisk}
</if>
</if >
