mybatis-plus queryWrapper如何舍弃null值?

发布于 2022-09-12 04:43:43 字数 298 浏览 14 评论 0

QueryWrapper我用的是这种形式的

eq(R column, Object val)

文档里说null值不会加入sql的生成,但是实际测试还是会。

mp有这种形式的

eq(boolean condition, R column, Object val)

但是这种要多写很多!=null的判断

所以有没有什么方法(或者说要配置什么)才能让QueryWrapper中的null值不参与sql的生成

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

记忆消瘦 2022-09-19 04:43:43

好家伙,我还跑去翻源码,翻了一会发现跑偏了,直接对queryWrapper改造不就行了。

public class CustomAbstractWrapper<T> extends QueryWrapper<T> {
    @Override
 protected QueryWrapper<T> addCondition(boolean condition, String column, SqlKeyword sqlKeyword, Object val) {
        if(Objects.isNull(val)){
            condition = false;
        }
        return super.addCondition(condition, column, sqlKeyword, val);
 }
}

重写queryWrapper.addCondition就行

メ斷腸人バ 2022-09-19 04:43:43

题主有解决吗?同问

不美如何 2022-09-19 04:43:43

看了下 MyBatis-Plus 官方文档,还可以用 allEq()方法中的 boolean null2IsNull 这个参数来解决这个问题。
不过,换了个思路,这个参数的作用是将value为null 的条件 自动转化为 isNull。

allEq(BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull)
参数说明:
null2IsNull : 为true则在map的value为null时调用 isNull 方法,为false时则忽略value为null的
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文