本文主要是介绍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的使用及说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!