mybatis-plus QueryWrapper中or,and的使用及说明

 更新时间:2025年07月21日 15:50:09   作者:老叶童鞋  
使用MyBatis Plus QueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发现OR逻辑覆盖了权限条件,通过正确使用and()方法,将条件组合为AND逻辑,解决了权限过滤失效的问题

QueryWrapper中or,and使用

这两天开发使用mybatisPlus的QueryWrapper组件时遇到一个问题,功能是开发一个列表,因为涉及到用户角色权限所以有个固定的查询条件        

queryWrapper.eq("user_id", userInfo.getUserId);

列表中还要同时模糊查询多个字段

所以我又增加了下面的语句

 if(StringUtils.isNotBlank(name)) {
        	queryWrapper.like("user_name", name)
                        .or()
                        .like("user_admin_name",name );;
        }

当这两个条件单独出现的时候查询都是没有问题,但是当两个条件同时出现,就会发现查询不是当前角色的数据也会展示出来。

经过排查

发现queryWrapper 的where执行语句是这样的

where (user_id='1' and user_name like '%叶%' or user_admin_name like '%叶%')

这就导致只要where后面的条件存在or的话

只要满足条件了,都会查询出结果集,后来经过查询文档,在QueryWrapper组件中找到了and()方法的使用,即可达到我们的期望值

queryWrapper.and(wq -> {
                // 拼接sql
                wq.like("user_name", name)
                   .or()
                   .like("user_admin_name",name);
                });
where (user_id='1' and (user_name like '%叶%' or user_admin_name like '%叶%'))

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Redis+Caffeine实现两级缓存的教程

    Redis+Caffeine实现两级缓存的教程

    这篇文章主要介绍了Redis+Caffeine实现两级缓存的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • java在运行时能修改工作目录吗

    java在运行时能修改工作目录吗

    这篇文章主要给大家介绍了关于java在运行时能修改工作目录的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • java中类和对象的详细介绍

    java中类和对象的详细介绍

    这篇文章主要给大家介绍了关于java中类和对象的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • java从list中取出对象并获得其属性值的方法

    java从list中取出对象并获得其属性值的方法

    这篇文章主要介绍了java从list中取出对象并获得其属性值的方法,大家参考使用
    2013-12-12
  • IntelliJ IDEA 最常用的配置图文详解

    IntelliJ IDEA 最常用的配置图文详解

    这篇文章给大家分享了IntelliJ IDEA 详细图解最常用的配置的相关知识点内容,有需要的朋友们可以参考学习下。
    2018-07-07
  • 深入理解Java设计模式之组合模式

    深入理解Java设计模式之组合模式

    这篇文章主要介绍了JAVA设计模式之组合模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2021-11-11
  • JSON 格式的弊端与解决方法(真实示例)

    JSON 格式的弊端与解决方法(真实示例)

    JSON 格式是目前最流行的数据交互格式,广泛应用于前后端分离的系统。但也有一些场合不适合使用 JSON 格式,这篇文章主要介绍了JSON 格式的弊端与解决方法,需要的朋友可以参考下
    2022-09-09
  • Java Bean 作用域及它的几种类型介绍

    Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧
    2022-09-09
  • Mybatis plus逻辑删除注解@TableLogic的使用

    Mybatis plus逻辑删除注解@TableLogic的使用

    本文主要介绍了Mybatis plus逻辑删除注解@TableLogic,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Javacsv实现Java读写csv文件

    Javacsv实现Java读写csv文件

    这篇文章主要为大家详细介绍了Javacsv实现Java读写csv文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论