SpringBoot【八】mybatis-plus条件构造器使用手册!

一、前言🔥

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

        经过上一期的mybatis-plus 入门教学,想必大家对它不是非常陌生了吧,这期呢,我主要是围绕以下几点展开,重点给大家介绍 里头的条件构造器 玩法,虽然比较容易上手,但我还是会做到句句是重点!希望小伙伴们在学习的过程中学的开心,玩的愉快!

二、如何使用构造器

前言:

QueryWrapper(LambdaQueryWrapper) 和UpdateWrapper(LambdaUpdateWrapper) 的父类是AbstractWrapper,
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为。

注意二者使用区别:

1). QueryWrapper: Entity 对象封装操作类 。

2). UpdateWrapper : Update 条件封装,用于Entity对象更新操作。

一般查询构造条件使用QueryWrapper,修改类型的使用UpdateWrapper

代码演练:如下分别是使用QueryWrapper 与 UpdateWrapper来进行参数传递。

/*** 根据性别查询所有用户** @param sex 性别*/
@Override
public List getUsersBySex(String sex) {//条件构造器QueryWrapper wrapper = new QueryWrapper<>();//eq 代表“ = ”;例如 eq("sex", "男") ---> sex = '男';等同于拼接在sql语句后边的where条件。wrapper.eq("sex",sex);//将条件带入查询List list = this.list(wrapper);//返回数据return list;
}/*** 根据用户id修改用户信息** @param userId 用户id*/
public boolean updateByUserId(String userId){//条件构造器UpdateWrapper wrapper = new UpdateWrapper<>();//传入条件wrapper.eq("id",userId);//调用修改方法return this.update(wrapper);
}

三、常用的条件构造器

#eq

eq(R column, Object val)
eq(boolean condition, R column, Object val)
  • 等于 =
  • 例: eq("name", "老王")--->name = '老王'

#ne

ne(R column, Object val)
ne(boolean condition, R column, Object val)
  • 不等于 <>
  • 例: ne("name", "老王")--->name <> '老王'

#gt

gt(R column, Object val)
gt(boolean condition, R column, Object val)
  • 大于 >
  • 例: gt("age", 18)--->age > 18

#ge

ge(R column, Object val)
ge(boolean condition, R column, Object val)
  • 大于等于 >=
  • 例: ge("age", 18)--->age >= 18

#lt

lt(R column, Object val)
lt(boolean condition, R column, Object val)
  • 小于 <
  • 例: lt("age", 18)--->age < 18

#le

le(R column, Object val)
le(boolean condition, R column, Object val)
  • 小于等于 <=
  • 例: le("age", 18)--->age <= 18

#between

between(R column, Object val1, Object val2)
between(boolean condition, R column, Object val1, Object val2)
  • BETWEEN 值1 AND 值2
  • 例: between("age", 18, 30)--->age between 18 and 30

#like

like(R column, Object val)
like(boolean condition, R column, Object val)
  • LIKE '%值%'
  • 例: like("name", "王")--->name like '%王%'

#notLike

notLike(R column, Object val)
notLike(boolean condition, R column, Object val)
  • NOT LIKE '%值%'

  • 例: notLike("name", "王")--->name not like '%王%'

  • 例: notInSql("id", "select id from table where id < 3")--->id not in (select id from table where id < 3)

    groupBy(R... columns) groupBy(boolean condition, R... columns)

  • 分组:GROUP BY 字段, ...

  • 例: groupBy("id", "name")--->group by id,name

#orderByAsc

orderByAsc(R... columns)
orderByAsc(boolean condition, R... columns)
  • 排序:ORDER BY 字段, ... DESC
  • 例: orderByDesc("id", "name")--->order by id DESC,name DESC

#orderBy

orderBy(boolean condition, boolean isAsc, R... columns)
  • 排序:ORDER BY 字段, ...
  • 例: orderBy(true, true, "id", "name")--->order by id ASC,name ASC

#or

or()
or(boolean condition)
  • 拼接 OR

    注意事项:

    主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)

  • 例: eq("id",1).or().eq("name","老王")--->id = 1 or name = '老王'

... ...

想要了解更多,请参考mybatis-plus 官网哈。此处就是给大家科普下项目中常用的。

四、实例演示

先造一个wrapper构造器,然后结合我上边给的常用构造器sql文档,怎么着也得把常用的api给玩一遍吧。这样后边开发项目写起来就轻松多啦!

如下wrapper的所有方法:

五、链式调用 lambda 式

  • 获取 LambdaWrapper
    QueryWrapper中是获取LambdaQueryWrapper
    UpdateWrapper中是获取LambdaUpdateWrapper

代码演示如下,改成链式写法:

public List getUsersByIdAndDate(Integer userId,Integer age){//lambda条件构造器LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();//传入条件queryWrapper.eq(UserEntity::getId,userId);queryWrapper.eq(UserEntity::getAge,age);//调用修改方法return this.list(queryWrapper);
}

说白了,lambda式玩法也一样,唯独就是你要先入门一下java8新特性之lambda表达式语法。这里就不展开讲啦,剩下来的就靠自己琢磨咯。

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

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

相关文章

洛谷P1229 遍历问题(c嘎嘎)

题目链接&#xff1a;P1229 遍历问题 - 洛谷 | 计算机科学教育新生态 题目难度&#xff1a;普及/提高 解题思路&#xff1a; 对于一个二叉树&#xff0c;并不是给定前序&#xff08;根左右&#xff09;后序&#xff08;左右根)就无法确定二叉树&#xff0c;只是说&#xff0…

selenium-ide web 自动化录制工具

https://www.selenium.dev/selenium-ide/ 官方下载插件安装 http://www.winwin7.com/soft/12693.html 官方下载不下来用这个安装的&#xff0c;拖过去安装 selenium的IDE插件进行录制和回放并导出为python/java脚本&#xff08;10&#xff09;_selenium ide脚本导出-CSDN博客…

【1】Python交叉编译到OpenHarmony标准系统运行(arm32位)

本文介绍如何Python语言如何在OpenHarmony标准系统运行,包括5.0r和4.1r以及4.0r,和未来版本的OpenHarmony版本上。 Python语言在OpenHarmony上使用,需要将Python解释器CPython移植到OpenHarmony标准系统。通过交叉编译的方式。 首先来了解几个概念: CPython 是 Python 编…

重生之我在异世界学智力题(2)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言智力题&#xff1a;逃离孤岛智力题&a…

基于SpringBoot和PostGIS的全球城市信息管理实践

目录 前言 一、业务需求介绍 1、功能思维导图 二、业务系统后台实现 1、Model层实现 2、业务层的实现 3、控制层的实现 三、前端管理业务的实现 1、全球城市列表的实现 2、详情页面实现 3、实际城市定位 四、总结 前言 在全球化和信息化时代背景下&#xff0c;城市作…

【汽车】-- 发动机类型

汽车发动机根据不同的分类标准可以分为多种类型。以下是常见的发动机类型及其特点&#xff0c;并列举相应的品牌和车型举例&#xff1a; 1. 按燃料类型分类 (1) 汽油发动机 特点&#xff1a;使用汽油作为燃料&#xff0c;通过火花塞点火&#xff0c;转速高&#xff0c;运转平…

【中工开发者】鸿蒙商城实战项目(启动页和引导页)

创建一个空项目 先创建一个新的项目选择第一个&#xff0c;然后点击finish 接下来为项目写一个名字&#xff0c;然后点击finish。 把index页面的代码改成下面代码块的代码&#xff0c;就能产生下面的效果 Entry Component struct Index {build() {Column(){Blank()Column(){…

el-thee懒加载删除某条数据 ,el-thee懒加载重置,el-thee刷新某个节点

一、懒加载的tree已经全部展开&#xff0c;外部点击删除的时候不需要重新展开点击获取下一层数据 <template> <el-treeref"tree":data"treeData":props"defaultProps"render-after-expandhighlight-currentlazy:expand-on-click-node&q…

我们来学mysql -- 探讨win安装方式(安装篇)

题记 书接上回&#xff0c;在我们来学mysql – 闲聊(安装篇)中&#xff0c;拿到安装包&#xff0c;当宝贝一样揣在怀里 然而&#xff0c;还没捂热乎&#xff0c;得粉丝秘报&#xff0c;U哥&#xff0c;上篇文章用了滞后的官方文档&#xff0c;哈哈哈…内心的小倔强&#xff0c…

android AIDL ipc binder转换

一. 概述 众所周知AIDL并不是所有的数据类型都可以传输。 可以传输的类型包括&#xff1a; 1.原生类型 2.String 3. CharSequence 4. List 5.Map 6. Binder 7. Parcelable 容器类 parcelable传输的时候会分解成成员&#xff0c;数组item的方式&#xff0c;传输完成后再进行…

9. Win11上原生运行Ubuntu

本文介绍如何在win11原生系统上运行ubuntu&#xff0c;不需要额外安装虚拟机&#xff0c;以及如何配置网络等。 1.安装正版Win11 由于正版Win11需要钱&#xff0c;网上能破解的win11可能有问题&#xff0c;但是它们的破解工具&#xff0c;却是能正常用的&#xff0c;所以&…

Java版-图论-最小生成树-Kruskal算法

实现描述 为了造出一棵最小生成树,我们从最小边权的边开始,按边权从小到大依次加入,如果某次加边产生了环,就扔掉这条边,直到加入了 n-1 条边,即形成了一棵树。 实现代码 首选我们对所有的边,按照权重排序;之后,从小到大选择边,如果当前的边已经连通过了,则放弃此…

十五、K8s计划任务JobCronJob

K8s计划任务CronJob&Job 一、Job可以干什么 Job 控制器用于管理 Pod 对象运行一次性任务,比方说我们对数据库备份,可以直接在 k8s 上启动一个 mysqldump 备份程序,也可以启动一个 pod,这个 pod 专门用来备份用的,备份结束 pod 就可以终止了,不需要重启,而是将 Pod…

如何使用程序查询域名whois信息?

直接使用TCP协议向WHOIS服务器的43端口发送查询请求即可返回WHOIS信息。 一些国际域名(.COM/.NET/.CC等)需要继续向各注册商的WHOIS服务服务发送查询请求来获取详细信息。 大部分New gTLD来说&#xff0c;服务器是“whois.nic.[后缀]”&#xff0c;例如.red的WHOIS服务器为whoi…

微信小程序横屏页面跳转后,自定义navbar样式跑了?

文章目录 问题原因&#xff1a;解决方案&#xff1a; 今天刚遇到的问题&#xff0c;横屏的页面完成操作后跳转页面后&#xff0c;自定义的tabbar样式乱了&#xff0c;跑到最顶了&#xff0c;真机调试后发现navbar跑到手机状态栏了&#xff0c;它正常应该跟右边胶囊一行。 知道问…

鸿道Intewell操作系统的纯软方案推介

鸿道Intewell操作系统纯软方案 鸿道Intewell操作系统MaVIEW软件方案 鸿道&#xff08;Intewell&#xff09;操作系统&#xff0c;MaVIEW是国产工业基础控制软件&#xff0c;鸿道Intewell操作系统MaVIEW方案&#xff0c;使两者有机融合&#xff0c;互为补充&#xff0c;从底层…

JavaEE 【知识改变命运】05 多线程(4)

文章目录 单例模式什么是单例模式饿汉模式懒汉模式多线程- 懒汉模式分析多线程问题第一种添加sychronized的方式第二种添加sychronized的方式改进第二种添加sychronized的方式&#xff08;DCL检查锁&#xff09; 阻塞队列什么是阻塞队列什么是消费生产者模型标准库中的阻塞队列…

海康威视摄像头RTSP使用nginx推流到服务器直播教程

思路&#xff1a; 之前2020年在本科的时候&#xff0c;由于项目的需求需要将海康威视的摄像头使用推流服务器到网页进行直播。这里将自己半个月琢磨出来的步骤给大家发一些。切勿转载&#xff01;&#xff01;&#xff01;&#xff01; 使用网络摄像头中的rtsp协议---------通…

美图撕掉蔡文胜标签

卖掉比特币的美图不投机了。 作者|周立青 编辑|杨舟 12月5日&#xff0c;比特币突破10万美元大关&#xff0c;曾花费1亿美元购入虚拟货币的美图宣布已出售所有加密货币。 美图在港交所发布公告称&#xff0c;自2024年11月起&#xff0c;公司已开始出售其持有的加密货币&…

遥感图像处理一(ENVI5.6 Classic)

1 实验目的和内容 1.1 实验目的 本次上机旨在了解ENVI软件的基本使用&#xff0c;并对提供的实验数据进行基本的图像合成、图像拉伸、图像分析、图像平滑与锐化和图像融合等操作并分析结果。 1.2 实验内容 1.2.1 图像合成 任选一景遥感影像&#xff0c;进行图像的彩色合成…