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 >
经验分享 程序员 微信小程序 职场和发展