mybatis查询列表

时间:2024-04-09 20:53:05

上上周做对接版本的寻知图项目时(SSM),调用大平台的接口同步用户基础数据。代码几乎是盲写的。按照以往经验,逻辑上根本没问题,程序也没有报异常。但是却出现了漏数据的情况。跟断点后,发现使用mybatis自带方法查询列表的时候,若查询结果为空,则返回结果为空list,size()=0。而使用手写sql查询数据的时候,若查询结果为空,则返回null。

源码如下:

mybatis查询列表

执行发现两种方式返回的结果确实不同。

分别跟了一下代码,dao层的时候,自己写的代码判断了如果查询结果为空,则返回null。这样处理导致两种方法返回的结果不同。

mybatis查询列表

当把返回null更改为 return list时,发现代码一中的结果都一样。无查询结果则返回空list。

mybatis查询列表

分析完毕。原因定位了。

因此,使用mybatis查询列表时,需要注意封装的时候,有没有做null处理。默认返回空列表