当前使用版本(必填,否则不予处理)

3.3.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

in()方法中,当collection为空列表时,SQL报错。 我搜了一下,前面已经有不少人提到这个问题了,大部分是 @miemieYaho 回复的。给出的回复是“由用户处理null和empty的情况”。 如果这位同学又看到有人提这个问题,估计也要烦死了😂。先别急哈。 我之前用过Python的ORM框架:Django和Peewee,它们遇到这种情况时,都可以正常处理。查看生成的SQL,发现并不生成xxx in ()这种SQL语句,而是生成0=1,其实就是让这个条件为false,这样得到的查询结果正是用户想要的。 使用mybatis plus,需要用户自己实现这个逻辑,如下。每次使用in时都要这样判断,的确很麻烦。所以,希望能将这个逻辑放在mybatis-plus的in方法中 query.func(qw -> { if (idList.isEmpty()) { qw.apply("0=1"); } else { qw.in("id", idList); } });

重现步骤(如果有就写完整)

报错信息

Comment From: miemieYaho

mp本质上就是mybatis,你要实现你想要的那你用mybatis也得xml写if来处理,所以需要你自己去处理,

Comment From: shijieahi

我今天也遇到了这个问题 你可以用静态代理的方法,继承QueryWrapper,之后@Override你提到的判空,问题就解决了