queryWrapper and和or嵌套查询

在使用MyBatis-Plus时,我们可以通过QueryWrapper来构建复杂的查询条件,其中可以使用andor来嵌套条件。以下是一个使用andor嵌套条件的例子:

1. and ( ... or ... or...) 格式

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;// 假设有一个实体类Entity和对应的服务类IService
public class Entity {private Integer id;private String name;private Integer age;// 省略其他字段、构造函数、getter和setter方法
}public interface IEntityService extends IService<Entity> {// 其他业务方法
}// 使用QueryWrapper构建查询条件
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Alice") // 外层and条件.and(i -> i.eq("age", 25).or().eq("age", 30)); // 嵌套and条件,其中包含or条件// 使用服务类进行查询
List<Entity> result = entityService.list(queryWrapper);
@GetMapping(value = "/list")public Result<IPage<YwglInfo>> queryPageList(YwglInfo ywglInfo,@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,HttpServletRequest req) {QueryWrapper<YwglInfo> queryWrapper = QueryGenerator.initQueryWrapper(ywglInfo, req.getParameterMap());String kh = req.getParameter("kh");if (StringUtils.isNotEmpty(kh)){//原来bug sql//queryWrapper.eq("send_addr",kh).or().eq("receive_addr",kh);queryWrapper.and(wrapper -> wrapper.eq("send_addr",kh).or().eq("receive_addr",kh));}Page<YwglInfo> page = new Page<YwglInfo>(pageNo, pageSize);IPage<YwglInfo> pageList = ywglInfoService.page(page, queryWrapper);return Result.OK(pageList);}

打印出来的正确SQL如下 

send_type = '0'并且(send_addr = '4224' 或者 receive_addr = '4214')

SELECT send_addr, send_type, receive_addr, receive_type,create_time, create_by, state_desc, comm_type, sfsc, send_time 
FROM ywglinfo WHERE(send_type = '0' AND (send_addr = '4224' OR receive_addr = '4214')) 
ORDER BY create_time DESC

错误SQL少了括号

send_type = '0'并且send_addr = '4224' 或者 receive_addr = '4214'

SELECT send_addr, send_type, receive_addr, receive_type,create_time, create_by, state_desc, comm_type, sfsc, send_time 
FROM ywglinfo WHERE 
(send_type = '0' AND send_addr = '4224' OR receive_addr = '4214') 
ORDER BY create_time DESC

2. or ( ... and  ... and ...)  格式

年纪既不等于6也不等于33

wrapper.or(wrapper -> wrapper.ne("age", 6).ne("age",33);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/806691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的“酒店管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“酒店管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统结构图 系统首页界面图 用户注册界面图 个人…

SaaS在线客服系统

随着互联网技术的飞速发展&#xff0c;企业与客户之间的沟通方式也在不断地演进。在这个信息爆炸的时代&#xff0c;如何快速、高效地响应客户需求&#xff0c;提供卓越的客户服务&#xff0c;成为企业竞争力的重要体现。在线客服系统作为连接企业与客户的桥梁&#xff0c;扮演…

亚远景科技-ASPICE 4.0 二级通用实践GP2.1.1 识别目标和定义过程实施策略

ASPICE 4.0 二级通用实践 GP 2.1.1 识别目标并定义过程执行策略。 确定过程活动的范围&#xff0c;包括过程实施管理和工作产品的管理。 判定要实现的相应结果。 识别过程执行的目标和相关准则。 注1&#xff1a;预算目标和客户交付日期、测试覆盖率目标及交付时间都是过程…

政安晨:【深度学习神经网络基础】(六)—— 前馈神经网络

目录 简述 前馈神经网络结构 计算输出 初始化权重 径向基函数神经网络 径向基函数 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎…

System.currentTimeMillis()

1纳秒0.000001毫秒 1纳秒0.000000001秒 Java中System.nanoTime()返回的是纳秒&#xff0c;nanoTime返回的可能是任意时间&#xff0c;甚至可能是负数 Java中System.currentTimeMillis()返回的毫秒&#xff0c;这个毫秒其实就是自1970年1月1日时起的毫秒数 System.nanoTime()是…

.NET MAUI Android Emulator运行错误 APT2000 系统找不到指定的文件

前言 本地.NET MAUI项目使用Android Emulator&#xff08;安卓模拟器&#xff09;调试运行&#xff0c;提示异常&#xff1a;严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息 错误 APT2000 系统找不到指定的文件。 错误原因 文件目录中不能…

无监督学习~clustering

什么是clustering&#xff1f; 聚类算法查看多个数据点&#xff0c;并自动找到彼此相关或相似的数据点。 K-means clustering 示例 循环&#xff1a;再次分配每个点到离它最近的质心&#xff0c;重新计算质心。 K-means algorithm 注意&#xff1a; k-means的初始化质心Mu有…

大话设计模式之单例模式

单例模式是一种创建型设计模式&#xff0c;它确保类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。 单例模式通常在以下情况下使用&#xff1a; 当一个类只能有一个实例&#xff0c;并且客户端需要访问该实例时。当该唯一实例需要被公开访问&#xff0c;以便在…

微服务-2 Eureka

Eureka 启动页面&#xff1a; 同理再注册完order-service后&#xff0c;刷新启动页面&#xff1a; userservice 启动多台服务&#xff1a; [ 代码 ]&#xff1a;orderService.java&#xff08;用 RestTemplate 调其他服务&#xff0c;用 userservice 代替 localhost:8081&…

CUDA10安装与卸载,CUDA10.2与MMSEG安装

安装CUDA10 1、因为要用到tensorflow1.15.5的GPU版本&#xff0c;所以想安装cuda10来进行加速&#xff0c;通过nvidia-smi检查本机上的CUDA版本 2、下载的cuda10版本&#xff0c;cuda_10.0.130_411.31_win10.exe 下载的cudnn版本&#xff0c;cudnn-10.0-windows10-x64-v7.6.4…

Spring 面试题(十二)

1. 解释一下Spring 中的 Enable* 注解的原理? Spring中的Enable*注解原理主要涉及到Spring的IoC容器和条件化配置。这些注解通过特定的机制来启用或激活Spring框架中的某些功能或特性。 以下是Enable*注解原理的主要方面&#xff1a; Import机制&#xff1a; Enable*注解通常…

B站广告推广操作教程及费用?

哔哩哔哩&#xff08;B站&#xff09;作为国内极具影响力的年轻人文化社区&#xff0c;已成为众多品牌与企业触达目标受众、提升品牌影响力的重要阵地。然而&#xff0c;面对B站复杂的广告系统与精细化运营需求&#xff0c;许多广告主可能对如何高效开展B站广告推广感到困惑。云…

备战蓝桥杯---数学刷题3

话不多说&#xff0c;直接看题&#xff1a; 1. 我们可以得到大致一个思路&#xff0c;就是先枚举1-1e6的质数&#xff0c;然后看看有几个即可。 我们怎么知道个数呢&#xff1f; 首先我们知道1---n中有n/p的下取整个为p的倍数。 因此&#xff0c;p的个数至少是n/p的下取整个…

typescript中的type关键字和interface关键字区别

Type又叫类型别名&#xff08;type alias&#xff09;,作用是给一个类型起一个新名字&#xff0c;不仅支持interface定义的对象结构&#xff0c;还支持基本类型、联合类型、交叉类型、元组等任何你需要手写的类型。 type num number; // 基本类型 type stringOrNum string |…

安装 FFmpeg

安装 FFmpeg 1. Install FFmpeg On Ubuntu2. Install FFmpeg On Ubuntu 16.042.1. First add the repository2.2. Update the newly added repository2.3. Now install the ffmpeg2.4. For opening the ffmpeg for that type ffpmeg on the terminal 3. Uninstall ffmpegRefere…

信息系统项目管理师——第5章信息系统工程(三)

近几期的考情来看&#xff0c;本章选择题稳定考4分&#xff0c;考案例的可能性有&#xff0c;需要重点学习。本章节专业知识点特别多。但是&#xff0c;只考课本原话&#xff0c;大家一定要把本章至少通读一遍&#xff0c;还要多刷题&#xff0c;巩固重点知识。 3 系统集成 3…

Web刷题记录——购物车

一、代码及解题思路 1、添加方法 &#xff08;1&#xff09;逻辑 a、需要判断本次添加的商品是否存在于购物车中【根据id值是否相等判断】 b、如果不存在&#xff0c;即设置num1&#xff0c;并追加本次商品 c、如果存在&#xff0c;即只需设置数值1 【注意】 &#xff1a;这里…

【Keil5-调试】

Keil5-调试 ■ 好的链接■ watch窗口中&#xff0c;变量值不会刷新■ 当选择了非0级优化时■■ ■ 好的链接 参考地址&#xff1a; debug ■ watch窗口中&#xff0c;变量值不会刷新 有时候在watch窗口中&#xff0c;变量值不会刷新&#xff0c;这时候就需要查看一下"V…

2820: 【算法思想】【双指针】长按键入

题目描述 你的朋友正在使用键盘输入他的名字 name。偶尔&#xff0c;在键入字符 c 时&#xff0c;按键可能会被长按&#xff0c;而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字&#xff08;其中一些字符可能被长按&#xff…

初识C++之内联函数 auto关键字

初识C之内联函数 auto关键字 文章目录 初识C之内联函数 auto关键字一、 内联函数1.1 定义1.2 应用1.3 特性 二、auto关键字2.1 简介2.2 auto的详细使用2.3 范围for&#xff08;C&#xff09;2.4 注意事项 一、 内联函数 1.1 定义 以inline修饰的函数叫做内联函数&#xff0c;…