本文主要是介绍mybatis-plus QueryWrapper中or,and的使用及说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发...
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",namChina编程e );; }
当这两个条件单独出现的时候查询都是没有问题,但是当两个条件同时出现,就会发现查询不是当前角色的数据也会展示出来。
经过排查
发现queryWrapper 的where执行语句是这样的
where (user_id='php1' 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); });
wXaKILhere (user_id='1' and (user_name like '%叶%' or user_admin_name likwww.chinasem.cne '%叶%python'))
总结
这篇关于mybatis-plus QueryWrapper中or,and的使用及说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!