Mybatis plus where添加括号方式

 更新时间:2022年01月12日 09:52:48   作者:微风夏至  
这篇文章主要介绍了Mybatis plus where添加括号方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Mybatis plus where添加括号

List<String> list = xxxx;
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.and(wrapper -> {
            for(String bm : list) {
                wrapper.like("xxxxx", bm).or();
            }
            return wrapper;
        });
queryWrapper.like("xx", "xxx");

打印的效果大概如下:

select * from table_name where (colA like '%xx%' or colA like '%xx%') and colB like '%xx%'

where或and后面的条件用括号括起来

今天在使用mybatisplus时需要将and后面的or条件使用括号包起来

    @ApiOperation(value = "查看粉丝列表", notes = "查看粉丝列表")
    @PostMapping("/fansList")
    public ResultVO<ResultListVO<LitemallBusiness>> fansList(@RequestParam(value = "bid") Integer bid,
                                                             @RequestParam(value = "nickName", required = false) String nickName) {
       try {
            QueryWrapper<LitemallBusiness> queryWrapperw = new QueryWrapper<LitemallBusiness>();
            queryWrapperw.eq("pid", bid).or().eq("pid2",bid);
            if (nickName != null && !nickName.equals("")) {
                queryWrapperw.like("nick_name", nickName);
            }
            queryWrapperw.eq("deleted", false);
            List<LitemallBusiness> litemall_businessList = businessService.list(queryWrapperw);
            return ResponseUtil.okList(litemall_businessList);
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseUtil.serious();
        }
    }

打印输出的sql

select * form litemall_business where deleted=0 and pid=1 or pid2=1

此条sql是没办法满足我需要的数据

实际上的我需要执行的sql是需要把and后面的or用()包起来作为一个条件来查询

所以mybatisplus的原生查询方法需要修改为:

@ApiOperation(value = "查看粉丝列表", notes = "查看粉丝列表")
    @PostMapping("/fansList")
    public ResultVO<ResultListVO<LitemallBusiness>> fansList(@RequestParam(value = "bid") Integer bid,
                                                             @RequestParam(value = "nickName", required = false) String nickName) {
       try {
            QueryWrapper<LitemallBusiness> queryWrapperw = new QueryWrapper<LitemallBusiness>();
            queryWrapperw.and(wrapper -> wrapper.eq("pid", bid).or().eq("pid2", bid));
  //            queryWrapperw.eq("pid", bid).or().eq("pid2",bid);
            if (nickName != null && !nickName.equals("")) {
                queryWrapperw.like("nick_name", nickName);
            }
            queryWrapperw.eq("deleted", false);
            List<LitemallBusiness> litemall_businessList = businessService.list(queryWrapperw);
            return ResponseUtil.okList(litemall_businessList);
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseUtil.serious();
        }
    }

这样sql打印出来就是:

select * form litemall_business where deleted=0 and (pid=1 or pid2=1)

这样就满足了我把and后面的or作为一个整体

这里需要注意的是:我的mybatisplus版本是3.0.7.1,这个版本中是没有andNew()的方法,所以需要使用这种方法时查看你的版本是否和我的一样,还有一点要注意,不要丢弃了语句中的.and()

这里顺便补充一下andNew()的写法

//mybatisplus版本3.0.7.1 jdk1.8 
queryWrapperw.and(wrapper -> wrapper.eq("pid", bid).or().eq("pid2", bid));
//执行sql
select * form litemall_business where deleted=0 and (pid=1 or pid2=1)

//mybatisplus版本低于3.0.7.1
queryWrapperw.andNew().eq("pid", bid).or().eq("pid2", bid);
//执行sql
select * form litemall_business where deleted=0 and (pid=1 or pid2=1)

其实最终执行的sql是一样的

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

相关文章

  • SpringSecurity 表单登录的实现

    SpringSecurity 表单登录的实现

    本文主要介绍了SpringSecurity 表单登录的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • MyBatis批量插入的五种方式小结(MyBatis以集合方式批量新增)

    MyBatis批量插入的五种方式小结(MyBatis以集合方式批量新增)

    本文主要介绍了MyBatis批量插入的五种方式小结(MyBatis以集合方式批量新增),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Centos中安装jdk案例讲解

    Centos中安装jdk案例讲解

    这篇文章主要介绍了Centos中安装jdk案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Spring AOP实现接口请求记录到数据库的示例代码

    Spring AOP实现接口请求记录到数据库的示例代码

    这篇文章主要介绍了Spring AOP实现接口请求记录到数据库,代码包括引入AOP依赖及创建日志记录表,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Intellij IDEA如何自定义注释模板的实现方法

    Intellij IDEA如何自定义注释模板的实现方法

    这篇文章主要介绍了Intellij IDEA如何自定义注释模板的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Spring Security十分钟入门教程

    Spring Security十分钟入门教程

    这篇文章主要介绍了Spring Security入门教程,Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架
    2022-09-09
  • Tk.mybatis零sql语句实现动态sql查询的方法(4种)

    Tk.mybatis零sql语句实现动态sql查询的方法(4种)

    有时候,查询数据需要根据条件使用动态查询,这时候需要使用动态sql,本文主要介绍了Tk.mybatis零sql语句实现动态sql查询的方法,感兴趣的可以了解一下
    2021-12-12
  • SpringMVC @RequestBody的使用解析

    SpringMVC @RequestBody的使用解析

    这篇文章主要介绍了SpringMVC @RequestBody的使用解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 简单谈谈ThreadPoolExecutor线程池之submit方法

    简单谈谈ThreadPoolExecutor线程池之submit方法

    下面小编就为大家带来一篇简单谈谈ThreadPoolExecutor线程池之submit方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • java中如何使用MD5进行加密

    java中如何使用MD5进行加密

    这篇文章主要介绍了java实现md5加密示例,在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,有需要的小伙伴可以参考下。
    2016-11-11

最新评论