当前使用版本(必填,否则不予处理)
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你提到的判空,问题就解决了