开发手记:简单的mapper接口查询数据为空?

Yao's Blog / 2023-05-19 / 原文

问题描述

简单的mapper查询接口返回的数据,但是却查不到数据,返回null,问题出现在两处,分别是简单的单查询和分页查询

问题定位

简单的断点调试后确定问题出在Dao层,也就是mapper接口,于是接下来:

  • 检查了数据库表数据,没有问题
  • 静态检查并单独提取了xml中的SQL语句手动执行,没有问题
  • 使用Junit单测了mapper接口(参数写死),没有问题

最离谱并且让我非常费解的是:


打断点,参数没有问题,但是就是查询返回null。
而我在下面补一句一摸一样的查询语句,唯一的区别是参数是写死的,但是是与请求参数是一样的,结果是上一句返回null下一句就成功查到数据了

我百思不得其解,也有想到可能是传参得问题,但是感觉不应该呀,以前都没有出过问题,于是去咨询了一下其他朋友的意见
给出的参考猜测是:

可能是参数没绑定参数名的原因,要么加注解,要么转成map或者对象,又或者xml里面用 0 ,1 ,2代替这三个参数,0,1,2指的是参数的顺序

注解我知道@Param,对于多参数的分页查询我觉得有道理,可能是因为参数没能正确匹配上,虽然以前似乎没出过错
而对于单参数得查询我对这个说法就比较质疑了,单参数传参应该不会出现问题,而且两边使用得参数名也是一样的
不管怎样,我还是决定调试试试