在开发中遇到一个问题,mybatis-plus 的 in 方法传入一个 size 为 0 的集合,查询会不拼接 in 条件导致全表扫描,具体如下:
queryByImageIdList 方法代码如下:
LambdaQueryWrapper<ImageParseResultPo> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ImageParseResultPo::getImageId, imageIdList);
return list(wrapper);
可以看到,sql 打印出来是没有拼接 in 条件的,在此记录下来。
如果有 in 条件进行修改、查询操作的时候,必须要校验参数信息,避免全表操作
自己就遇到过同事因为没校验好导致的线上全表操作,差点造成重大 BUG:mybatis 相关 - 掘金 (juejin.cn)