今天在使用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是一样的

mybatisplus where或and后面的条件用括号括起来相关推荐

  1. mybatisplus where语句里面的条件用括号括起来

    SQL:SELECT * FROM User where xl='1' and (Zt = '待审核' or Zt = '已驳回') and xh='2' 需要用mybatisplus实现: User ...

  2. Mybatis-Plus实战中的几个条件构造器Wrapper用法

    Mybatis-Plus实战中的几个条件构造器Wrapper用法 其实Wrapper有很多其他的方法,组合起来也是殊途同归,大家可以自己点开源码去查看一些方法的使用说明 @Testvoid conte ...

  3. SpringBoot+MyBatisPlus实现前端传递时间查询条件ajax请求后台并回显数据流程整理

    场景 前端时间选择控件,选择时间后点击搜索,请求后台数据,后台根据时间查询数据库中 一天的记录数并回显给前端,前端进行显示. 实现 前端页面代码(部分) <div class="ibo ...

  4. MybatisPlus多表联查分页多条件查

    一.mapper 注意: 1,${ew.customSqlSegment}不用管加上就行,主要作用是让wrapper中的sql自动拼接上去,分页会自动拼接@select中只需要让多表关联上就行 2,g ...

  5. Mybatis-Plus查询语句无故自动加条件

    一.问题 今日写业务,分页查询使用 warpOPDefaultLike(xxxSearchDTO).build() 方法,在控制台打印出来的sql语句结尾莫名加上了 "where state ...

  6. mybatisPlus根据起止时间作为条件进行查询

    背景 查询当天凌晨0.00 到当前时间的数据 代码 SimpleDateFormat wrapperSdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm ...

  7. python 数列筛选_numpy ndarray 按条件筛选数组,关联筛选的例子

    最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁.其中ndarray如何进行数值筛选,总结了几种方法. 1.按某些固定值筛选 如下面这段代码从,ndarray中可以筛选出数值等于 ...

  8. (转载)Python数据分析之pandas学习

    转载地址:http://www.cnblogs.com/nxld/p/6058591.html Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容: 1.数据 ...

  9. 深度之眼课程打卡-python入门05

    目录 文章目录 目录 前言 内容 一.数据结构介绍 1.Series的创建 2.DataFrame的创建 二.数据索引index 1.通过索引值或索引标签获取数据 2.自动化对齐 三.利用pandas ...

最新文章

  1. c语言输出精确圆周率,如何设计C语言程序输出圆周率小数点后的1000位?请大侠出手啊。...
  2. 盘点过去一年,MIT人工智能实验室的那些创新
  3. 开发流媒体服务器_Github选出10大开源免费的RTSP流媒体项目
  4. 滚动条加载功能实现(懒加载)
  5. 模块怎么用_IC设计方法:模块划分与overdesign
  6. 英特尔自动驾驶部门秘密申请IPO 有望成今年美股规模最大IPO
  7. 是否有唯一的Android设备ID?
  8. 高仿精仿快播应用android源码下载
  9. php映射关系二维数组,php – 在二维数组中映射值并对值执行函数
  10. Spring的JdbcTemplate实现分页
  11. 王海婷也可以编程,厚脸皮谈自己的一些事情
  12. 圆通电子面单接口对接
  13. 使用html仿支付宝首页,仿支付宝首页头部伸缩效果
  14. ubuntu系统,网页版音乐播放器无声音
  15. vector实现 并交差 集实例
  16. 士不可不弘毅,任重而道远——2021年总结
  17. android win10 投屏,安卓手机投影win10不成功,版本升级前可以
  18. 做计算机的小卫士教案,小学信息技术教案四年级上环保小卫士
  19. python对txt文本文件边读边写,同时读取和写入的方式修改文件
  20. 前端必备:五大css自动化生成网站(稀有级别!)

热门文章

  1. Graph Visualization and Navigation in Information Visualization: A Survey 译文
  2. 在Excel中选取一行中的最大数值进行标题匹配
  3. 哪些人适合转行学习IT技术呢
  4. SQL Server 简单模式下,误删除堆表记录如何恢复(绕过页眉校验)
  5. redis cluster 集群 HA 原理和实操(史上最全、面试必备)
  6. 设置什么加快计算机启动速度,如何设置CPU加速对电脑启动速度的方法(更改CPU数量可开机提速)...
  7. MacOS Ventura 13.1 (22C65) 正式版带 OC 0.8.7 and winPE 双分区原版黑苹果镜像
  8. 获取数据库表格的字段名、类型、长度、注释等属性
  9. 10大最受欢迎的国外业务流程管理(BPM)软件
  10. 如何解决Selenium打不开Ie浏览器