首先注入 mapper 服务实现类,看到原来的写法:

QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("aaa", "bbb");
routeService.list(queryWrapper).get(0)

然后莫名觉得为什么不直接使用 getOne() 呢,这样不是更明了吗?在没有弄清楚两者的差别和正确使用方法的时候就自以为懂了去修改:

QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("aaa", "bbb");
routeService.getOne(queryWrapper);

结果在测试的时候报错了,报的是 mybatis 的错误,一开始没有意识到是 getOne 的问题,后来对比发现,查询结果只有一条记录的使用 getOne 不会报错,而在结果大于一条时会一直报错。

网上查找问题,提到了需要限制返回结果,即在这里的 queryWrapper 上增加限制:

QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("aaa", "bbb");
queryWrapper.last("limit 1");
routeService.getOne(queryWrapper);

测试没有问题。