mybatis-plus 在 in 条件查询时,传入空集合会导致全表扫描

823 阅读1分钟

在开发中遇到一个问题,mybatis-plus 的 in 方法传入一个 size 为 0 的集合,查询会不拼接 in 条件导致全表扫描,具体如下: image.png

queryByImageIdList 方法代码如下:

LambdaQueryWrapper<ImageParseResultPo> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ImageParseResultPo::getImageId, imageIdList);
return list(wrapper);

可以看到,sql 打印出来是没有拼接 in 条件的,在此记录下来。
如果有 in 条件进行修改、查询操作的时候,必须要校验参数信息,避免全表操作 自己就遇到过同事因为没校验好导致的线上全表操作,差点造成重大 BUG:mybatis 相关 - 掘金 (juejin.cn)