MybatisPlus------条件构造器Wrapper以及QueryWrapper用法(七)
MybatisPlus------条件构造器Wapper(七)
Wrapper:条件构造器抽象类,最顶端父类
AbstarctWrapper:用于查询条件封装,生成sql的where条件。
QueryWrapper:查询条件封装(可以用于查询、删除,更新)
UpdateWrapper:Update条件封装
AbstractLambdaWrapper:使用Lambda语法
LambdaUpdateWrapper:用于Lambda语法使用的查询Wrapper
LambdaQueryWrapper:用于Lambda语法使用的更新Wrapper
使用QueryWrapper进行更新
@Testpublic void testUpdate(){// 将(年龄大于20,并且用户名中包含有a)或邮箱为null的信息修改//where条件QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();baseProcedureQueryWrapper.gt("age",20).like("procedure_name","a").or().isNull("eamil");//更新值BaseProcedure baseProcedure = new BaseProcedure();baseProcedure.setProcedureName("asdasd");int update = baseProcedureMapper.update(baseProcedure, baseProcedureQueryWrapper);System.out.println("update"+update);}
涉及到条件优先级怎么处理?
涉及到where子句后判断的优先级时(lambda中的条件优先执行),
例如:
将用户名中包含有a并且(年龄大于20或邮箱为null)的信息修改
@Testpublic void testUpdate2(){// 将用户名中包含有a并且(年龄大于20或邮箱为null)的信息修改//where条件//涉及到lambda表达式,lambda中的条件优先执行QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();baseProcedureQueryWrapper.like("procedure_name","a").and(i ->{i.gt("age",20).or().isNull("eamil");});//更新值BaseProcedure baseProcedure = new BaseProcedure();baseProcedure.setProcedureName("asdasd");int update = baseProcedureMapper.update(baseProcedure, baseProcedureQueryWrapper);System.out.println("update"+update);}
and()和or()中的Consumer怎么理解?
and()方法源码:
/*** 查询条件封装* <p>嵌套</p>* <li>泛型 Param 是具体需要运行函数的类(也是 wrapper 的子类)</li>** @author hubin miemie HCL* @since 2017-05-26*/
public interface Nested<Param, Children> extends Serializable {/*** ignore*/default Children and(Consumer<Param> consumer) {return and(true, consumer);}
Param是泛型,是具体需要运行函数的类,也就是 wrapper 的子类,就是条件构造器,因此可以将条件构造器写入and方法中。
而Consumer,是Lambda表达式中的消费者接口,消费者接口中一定是由参数的,方法中的内容就是我们对参数的操作方式,
仅需要查询部分字段如何写?
通过调用QueryWrapper的select()方法,在该方法里传入需要查询的字段即可。
@Testpublic void testSelect(){//查询用户用户名,和用户编码QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();baseProcedureQueryWrapper.select("procedure_code","procedure_name");List<Map<String, Object>> maps = baseProcedureMapper.selectMaps(baseProcedureQueryWrapper);maps.forEach(System.out::println);}
子查询如何操作
通过inSql方法,传入字段,以及子查询sql即可。
案例比较简单,仅仅用来测试,无实际意义
@Testpublic void testSelect02(){//子查询//SELECT * from base_procedure//WHERE id = (SELECT id from base_procedure WHERE id = 'ef5397a26b7a469c6fe1de0e')QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();baseProcedureQueryWrapper.inSql("id","SELECT id from base_procedure WHERE id = 'ef5397a26b7a469c6fe1de0e'");List<Map<String, Object>> maps = baseProcedureMapper.selectMaps(baseProcedureQueryWrapper);maps.forEach(System.out::println);}
相关文章:

MybatisPlus------条件构造器Wrapper以及QueryWrapper用法(七)
MybatisPlus------条件构造器Wapper(七) Wrapper:条件构造器抽象类,最顶端父类 AbstarctWrapper:用于查询条件封装,生成sql的where条件。 QueryWrapper:查询条件封装(可以用于查询、删除&#x…...

NetSuite Intercompany Framework 101
今朝,谈一谈Intercompany Framework,这是一个彰显NetSuite市场野心的基础功能框架。从20.2开始逐渐浮出水面,虽然经过过往的几个版本,不断推出组成功能,但目前仍然未见其全貌。 作为顾问,你必须关注它&…...

限时活动|凭徽章领披萨大奖,玩转Moonbeam治理论坛
动动手指,无需每天打卡,用刷手机的零碎时间领一份Web3惊喜! 本次挑战的目标是鼓励大家参与社区治理、熟悉论坛操作。有关参与方式和原因的信息在Twitter上共享:有兴趣可以和ThinkWildCrypto一起探索论坛以解锁其功能、了解最近和正…...
Golang中struct{}和struct{}{}的区别你知道吗?
首先说下Golang中的结构体,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,Golang中使用关键字struct来创建一个结构体,语法如下:typeStudentstruct { Name string }下面定义一个Student结构体,例如&am…...

网络安全-信息收集- 谷歌浏览器插件收集信息,谷歌hacking搜索语法-带你玩不一样的搜索引擎
网络安全-信息收集- 谷歌浏览器插件收集信息,谷歌hacking搜索语法-带你玩不一样的搜索引擎 前言 一,我也是初学者记录的笔记 二,可能有错误的地方,请谨慎 三,欢迎各路大神指教 四,任何文章仅作为学习使用 …...

基础篇—一文掌握css的边框属性
CSS 边框属性 CSS边框属性允许你指定一个元素边框的样式和颜色。 1、边框样式 边框样式属性指定要显示什么样的边界。 border-style属性用来定义边框的样式 2、边框宽度 您可以通过 border-width 属性为边框指定宽度。 为边框指定宽度有两种方法:可以指定长度值,比如 2px…...

05服务发现:引入etcd服务注册中心
在分布式微服务架构中,服务注册发现组件(通常称为服务注册中心)往往有着举足轻重的作用,它的性能与稳定可能会直接影响到整个服务的状态,比如Spring Cloud中的Eureka、Dubbo中的Zookeeper等等,接下来我们就gRPC微服务中最常见的服务注册中心etcd,来讲述下两者在具体是怎…...

Pdfium.Net SDK 4.78.2704 完美Crack/Ptach
不限制时,/不限PDF体积、、、、、// version: 4.78.2704 | file size: 52.7 Mb Pdfium .Net SDK C# PDF 库 从头开始或从一堆扫描图像创建 PDF 编辑、合并、拆分和操作 PDF,提取文本和图像 嵌入独立的 Winforms 或 WPF PDF 查看器 支持:.Net…...

再学C语言38:指针操作
C提供了6种基本的指针操作 示例代码: #include <stdio.h>int main(void) {int arr[5] {1, 2, 3, 4, 5};int * p1, *p2, *p3;p1 arr; // 把一个地址赋给指针p2 &arr[2]; // 把一个地址赋给指针printf("指针指向的地址,指针指向地址中…...

【论文Word排版】使用多级列表设置论文序号
在Word中对论文进行排版 1.设置章节前面的序号 1.1 需求 通常情况下要求如下 一级标题“第一章 XXX”,然后是“1.1 研究意义”, “1.2 研究现状” 之前的处理方式都是手打,并没有借助word的多级列表实现。这次趁着写毕业论文研究了一下。…...

分支管理方案
背景 在工作的过程中,git管理方式已经成为每一个项目开发的基础,每个项目的开发都离不开git管理方式。 但是在使用的过程中,由于对git分支管理方案的了解不深,导致会出现分支管理不明确的情况。 本文主要是做科普作用ÿ…...

Allegro走线时如何自动关闭其它网络飞线显示操作指导
Allegro走线时如何自动关闭其它网络飞线显示操作指导 在做PCB设计的时候,尤其是在评估布线的时候,走某一个网络的时候,希望其它网络的飞线会被自动关闭,方便评估。 Allegro支持这个功能,如下图 走线前 走线后 具体操作如下 点击Route...
Linux中常用命令汇总二
Linux中常用命令汇总一文章地址:https://blog.csdn.net/u011837804/article/details/1289952531、时间日期类基本语法date [OPTION]... [FORMAT]选项说明选项说明-d<时间字符串>显示指定的“时间字符串”表示的时间,而非当前时间-s<日期时间>…...

【数据结构】排序算法
目录 1.理解排序 1.1 排序的概念 1.2 排序的运用场景 1.3 常见的排序算法 2.插入排序算法 2.1 直接插入排序 2.2 希尔排序 3.选择排序算法 3.1 直接选择排序 3.2 堆排序 4.交换排序算法 4.1 冒泡排序 4.2 快速排序 4.2.1 hoare 法 4.2.2 挖坑法 4.2.3 前…...

[MySQL]初识数据库
哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据库,也是新的知识,首先我们会初步认识什么是数据库,什么是Mysql 数据库,以及我们 mysql 主要学什么,SQL 语句简单使用&…...

XXL-JOB分布式任务调度框架(二)-路由策略
文章目录1.引言2.任务详解2.1.执行器2.2.基础配置3.路由策略(第一个)-案例4.路由策略(最后一个)-案例5.轮询策略-案例7.分片广播任务1.引言 本篇文章承接上文《XXL-JOB分布式任务调度框架(一)-基础入门》,上一次和大家简单介绍了下 xxl-job 的由来以及使用方法&…...

Java_Maven:5. 把第三方 jar 包放入本地仓库或私服
目录 1 导入本地库 2 导入私服 3 参数说明 1 导入本地库 随便找一个 jar 包测试,可以先 CMD进入到 jar 包所在位置,运行 mvn install:install-file -DgroupIdcom.alibaba -DartifactIdfastjson -Dversion1.1.37-Dfile fastjson-1.1.37.jar -Dpackaging…...
【剑指offer】03~05. 数组中的数字(C# 实现)
文章目录前言03. 数组中重复的数字04. 二维数组中的查找05. 替换空格结语前言 😃 大家好,我是writer桑,这是自己整理的 C# 做题记录,方便自己学习的同时分享出来,感谢支持。 03. 数组中重复的数字 题目描述࿱…...

Docker入门教程
文章目录一、Docker概述1. 什么是容器技术?2. 什么是Docker3. 为什么要使用Docker4. Docker和虚拟机的对比5. Docker相关概念6. DockerHub7. Docker架构二、安装Docker1. 安装Docker2. 配置阿里云镜像加速三、Docker常用命令1. 帮助命令2. 镜像操作命令3. 容器操作命…...

I2C总线应用测试程序
参考链接:I2c协议 Linux I2C应用编程开发 问题背景 在工作中需要测试I2C总线的传输稳定性,需写一个测试程序通过读写从设备寄存器的值来验证数据传输稳定性。 站在cpu的角度来看,操作I2C外设实际上就是通过控制cpu中挂载该I2C外设的I2C控制…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...