记一次工作中遇到Mytatis 处理Integer 为0时的查询结果不对应问题,
最近加入了一个杭州区块链公司,公司的的项目周期都很端,所以自己写过接口后没有时间测试,继续转战其他接口, 今天前端同事联调时说:金国,你这个插叙企业列表的查询条件都没有问题,不过这个企业审核状态为0时,查询的结果中怎么还包含为1 和2 的数据呢?–自问 我这么低级的错误怎么会忘记写筛选条件呢? 看了代码
没问题啊 ,然而打开swagger 自己测试一下,传1 ,2 时都是正确匹配,传0 时查询的结果集果然同同事所说,
于是在mybatis 中少加了逗号排查问题,看输入0的时候 是否报错,结果并没有执行,输入1,2时 sql执行报错,心想肯定时0 被Integer 转成了null, 所以sql 执行的时候没有执行该段sql ,
当然解决方案也很多,比如 mybatis 不做不为null 判断,或者在入口直接转成String 类型,