Mybatis 数字类型传参为0时遇到的坑点

前几日,旧项目遇到一个问题,就是查询的时候id明明传了值为0,但是生成的sql中缺没有带上这个参数

我把例子列出来

SELECT count(*) FROM 表名
   
      
         id = #{id}
      
   

除了 id设置为0 时,得到的sql是 SELECT count( * ) FROM 表名 并没有拼接上参数
id非0 时候都是没问题的,得到的sql是 SELECT count( * ) FROM 表名 WHERE id = #{id}

原因:Mybatis 进行 id != '' 判断时,将0转换成空字符串,其他的判断不会转换

最好的处理方式就是,保持好习惯,不要乱写判断,该有的可能才判断,数字类型不会出现空字符串的问题就不要去判断,空字符串是String才需要判断的,如果是基础类型,if都没必要有,肯定有默认值

封装类型

SELECT count(*) FROM 表名
   
      
         id = #{id}
      
   

基础类型

SELECT count(*) FROM 表名
WHERE id = #{id}

你可能感兴趣的:(Mybatis 数字类型传参为0时遇到的坑点)