mybatis - int型数据值为0查询判断的一次踩坑记录

开发中某次遇到根据状态查询数据的需求,当时设计数据表中状态字段status使用的是int基本mysql数据类型,当查询状态为否,即status=0的记录是总是无法获取正确结果,当时的mybatis的mapper映射文件xml配置如下:


   and status = #{Status,jdbcType=INTEGER}

表面上怎么看这里都没有什么问题,所以浪费了很长时间也没有定位到问题。后来查找各种mybatis资料,终于明白问题就自安于后面那个字符的判断上面,即:and Status != '',mybatis当status 的值为0的时候,因为其数据类型为Integer,所以这个判断是为false的,就是说int类型的判断,Mybatis是认定 0= '' 的,所以判断Status != '' 为false,这样就根本不会去执行查询了。

出坑正确写法:


   and status = #{Status,jdbcType=INTEGER}

 

总结:开发效率高还是低,有时候往往因为一点点不起眼的小细节而深受影响!

“细节决定成败”,此刻对这句话的体会更深刻了 !

你可能感兴趣的:(mybatis)