【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍

博主打算从0-1讲解下java进阶篇教学,今天教学第九篇:MyBatis-Plus用法介绍。

在 MyBatis-Plus 3.5.0 中,LambdaQueryWrapper支持多种条件构造方式,除了等于(eq)、不等于(ne)、大于(gt)、小于(lt)、大于等于(ge)、小于等于(le)等基本的条件构造方式外,还包括模糊查询(like)、模糊查询不匹配值(notLike)、在列表中(in)、不在列表中(notIn)等。

本文以MyBatis-Plus 3.5.0版本讲述!

目录

一、依赖

二、基本使用

三、LambdaQueryWrapper条件构造

3.1 模糊查询 

3.2 排序

3.3 分页

3.4 结果封装

3.5 模糊查询不匹配值

3.6 在列表中(in)

3.7 不在列表中(notIn)

3.8 分组

四、方法和属性

五、mybatis-plus版本不同


一、依赖

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.0</version></dependency>

二、基本使用

假设有一个BannerItem表,需要通过banner_id查出所有数据(查询List)。

public class BannerItem {private Long id;private String name;private String img;private String keyword;private Integer type;private Long bannerId;
}

 可以使用QueryWrapper进行查询,最基础的使用方式如下:

LambdaQueryWrapper<BannerItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BannerItem::getBannerId, bannerId);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);

三、LambdaQueryWrapper条件构造

// 等于
wrapper.eq(BannerItem::getBannerId, bannerId);
// 不等于
wrapper.ne(BannerItem::getBannerId, bannerId);
// 大于
wrapper.gt(BannerItem::getBannerId, bannerId);
// 小于
wrapper.lt(BannerItem::getBannerId, bannerId);
// 大于等于
wrapper.ge(BannerItem::getBannerId, bannerId);
// 小于等于
wrapper.le(BannerItem::getBannerId, bannerId);

3.1 模糊查询 

// 模糊查询
wrapper.like(BannerItem::getName, "%zhangsan%");

3.2 排序

// 排序
wrapper.orderByDesc(BannerItem::getCreateTime);

3.3 分页

// 分页
Page<BannerItem> page = new Page<>(1, 10);
wrapper.page(page);

3.4 结果封装

// 结果封装
List<BannerVO> bannerVOs = wrapper.map(BannerVO::new).list();

3.5 模糊查询不匹配值

// 模糊查询不匹配值
wrapper.notLike(BannerItem::getName, "%zhangsan%");

3.6 在列表中(in)

// 使用列表形式
ArrayList<Integer> arrayList = new ArrayList<>();
Collections.addAll(arrayList, 18, 20, 21);
lambdaQueryWrapper.in(User::getAge, arrayList);// 使用列举值形式
lambdaQueryWrapper.in(User::getAge, 18, 20, 21);

3.7 不在列表中(notIn)

// 使用列表形式
ArrayList<Integer> arrayList = new ArrayList<>();
Collections.addAll(arrayList, 18, 20, 21);
lambdaQueryWrapper.notIn(User::getAge, arrayList);// 使用列举值形式
lambdaQueryWrapper.notIn(User::getAge, 18, 20, 21);

3.8 分组

// 假设我们有一个 Order 实体类,包含 orderId(订单编号)和 customerId(客户编号)字段
LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();// 根据 customerId 进行分组
wrapper.groupBy(Order::getCustomerId);// 执行查询
List<Order> groupedOrders = orderMapper.selectList(wrapper);

四、方法和属性

方法

  1. eq:用于设置等于条件,例如queryWrapper.eq(User::getAge, 18)表示查询年龄等于 18 的用户。
  2. ne:用于设置不等于条件,例如queryWrapper.ne(User::getAge, 18)表示查询年龄不等于 18 的用户。
  3. lt:用于设置小于条件,例如queryWrapper.lt(User::getAge, 18)表示查询年龄小于 18 的用户。
  4. le:用于设置小于等于条件,例如queryWrapper.le(User::getAge, 18)表示查询年龄小于等于 18 的用户。
  5. gt:用于设置大于条件,例如queryWrapper.gt(User::getAge, 18)表示查询年龄大于 18 的用户。
  6. ge:用于设置大于等于条件,例如queryWrapper.ge(User::getAge, 18)表示查询年龄大于等于 18 的用户。
  7. like:用于设置模糊查询条件,例如queryWrapper.like(User::getUsername, "%zhang%")表示查询用户名包含"zhang"的用户。
  8. in:用于设置范围查询条件,例如queryWrapper.in(User::getAge, Arrays.asList(18, 20, 25))表示查询年龄在 18、20、25 中的用户。
  9. notIn:用于设置不在范围内的查询条件,例如queryWrapper.notIn(User::getAge, Arrays.asList(18, 20, 25))表示查询年龄不在 18、20、25 中的用户。
  10. between:用于设置范围查询条件,例如queryWrapper.between(User::getAge, 18, 25)表示查询年龄在 18 到 25 之间的用户。
  11. notBetween:用于设置不在范围内的查询条件,例如queryWrapper.notBetween(User::getAge, 18, 25)表示查询年龄不在 18 到 25 之间的用户。
  12. select:用于自定义查询结果的字段,例如queryWrapper.select(User::getUsername, User::getAge)表示查询用户名和年龄两个字段。
  13. orderBy:用于设置查询结果的排序规则,例如queryWrapper.orderByDesc(User::getAge)表示按照年龄降序排序查询结果。
  14. and:用于添加多个查询条件,例如queryWrapper.eq(User::getAge, 18).and(queryWrapper.like(User::getUsername, "%zhang%"))表示查询年龄等于 18 且用户名包含"zhang"的用户。
  15. or:用于添加多个查询条件,例如queryWrapper.eq(User::getAge, 18).or(queryWrapper.like(User::getUsername, "%zhang%"))表示查询年龄等于 18 或用户名包含"zhang"的用户。

属性

  1. sqlSegment:表示当前查询条件的SQL片段。

五、mybatis-plus版本不同

可能因为mybatis-plus版本不同,方法和属性有略微不同,请理性对待!

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

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

相关文章

【游戏行业】2024年电子游戏分类,国内游戏产业报告,发展趋势

文章目录 一、电子游戏分类1、传统游戏分类2、混合手游分类3、二次元、开放设计、调查问卷 二、游戏产业报告1、游戏产业数据2、游戏公司名单&#xff08;独角兽&#xff09;3、营收与利润&#xff08;对比互联网、国企&#xff09; 三、发展趋势1、游戏行业上下游2、游戏行业趋…

SSM整合-前后端分离-项目环境搭建 (上)

整合SSM 项目基础环境搭建项目介绍创建项目项目全局配置web.xmlSpringMVC配置配置Spring和MyBatis, 并完成整合创建表, 使用逆向工程生成Bean, XxxMapper和XxxMapper.xml注意事项和细节说明 实现功能01-搭建Vue前端工程需求分析/图解代码实现搭建Vue前端工程vue3项目目录结构梳…

力扣例题(接雨水)

链接&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 思路&#xff1a; 判断一块地方是否可以接到雨水&#xff0c;只需要判断他是否有左右边界使他可以接到水 左右边界分别为此处左侧的最高点和右侧的最高点 同时此处可接雨水的高度为左右两…

VMware虚拟机安装Linux(CentOS)【超详细】

参考大佬文章&#xff1a;VMware虚拟机安装Linux教程(超详细)_vmware安装linux虚拟机-CSDN博客 目录 一、获取映射文件 二、新建虚拟机 三、安装操作系统 四、切换系统用户 一、获取映射文件 参考大佬文章获取映射文件&#xff0c;以及对应修改后缀名的方法 二、新建虚拟…

C语言实验-学生信息管理系统

按以下菜单界面编写学生信息管理系统&#xff1b; 1&#xff09;录入学生信息首先输入学生人数&#xff0c;然后根据学生人数开辟动态数组&#xff1b; 2&#xff09;学生信息包括学号、姓名、性别、三门课成绩、总分&#xff1b;其中学号、姓名、 性别、三门课成绩是需要从键盘…

[方法] Unity 实现仿《原神》第三人称跟随相机 v1.0

参考网址&#xff1a;【Unity中文课堂】RPG战斗系统Plus 在Unity游戏引擎中&#xff0c;实现类似《原神》的第三人称跟随相机并非易事&#xff0c;但幸运的是&#xff0c;Unity为我们提供了强大的工具集&#xff0c;其中Cinemachine插件便是实现这一目标的重要工具。Cinemachi…

开源的贴吧数据查询工具

贴吧数据查询工具 这是一个贴吧数据查询工具&#xff0c;目前仍处于开发阶段。 本地运行 要本地部署这个项目&#xff0c;请 克隆这个仓库并前往项目目录 git clone https://github.com/Dilettante258/tieba-tools.git cd tieba-tools安装依赖 pnpm install运行项目 np…

240503-关于Unity的二三事

240503-关于Unity的二三事 1 常用快捷键 快捷键描述CtrlP播放/停止Ctrl1打开Scene窗口Ctrl2打开Game窗口Ctrl3打开Inspect窗口Ctrl4打开Hierarchy窗口Ctrl5打开Project窗口Ctrl6打开Animation窗口 2 关联VisualStudio2022 3 节约时间&#xff1a;将最新声明的参数移动到最上…

mysql主库delete一个没主键的表导致从库延迟很久问题处理

一 问题描述 发现线上环境一个从库出现延迟&#xff0c;延迟了2天了&#xff0c;还没追上主库。 查看当前运行的sql及事务&#xff0c;发现这个sql语句是在delete一个没主键的表。 二 问题模拟 这里在测试环境复现下这个问题。 2.1 在主库造数据 use baidd; CREATE TABL…

使用D3.js进行数据可视化

D3.js介绍 D3.js是一个流行的JavaScript数据可视化库&#xff0c;全称为Data-Driven Documents&#xff0c;即数据驱动文档。它以数据为核心&#xff0c;通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具&#xff0c;使得开发者能够创建出各种交互式和动态的数据可…

PPT基础

5种ppt仅可读形式 Ⅰ 开始选项卡 1.【幻灯片】组中&#xff1a;新建幻灯片&#xff0c;从大纲中导入幻灯片&#xff1b;修改幻灯片的版式&#xff1b;节&#xff08;新增节&#xff0c;重命名节&#xff09;。 2.【字体】组中&#xff1a;设置字体&#xff0c;字体大小&…

2024年怎么下载学浪app视频

想要在2024年紧跟潮流&#xff0c;成为一名优秀的学浪用户吗&#xff1f;今天就让我们一起探索如何下载学浪app视频吧&#xff01; 学浪视频下载工具打包 学浪下载工具打包链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享…

BJFUOJ-C++程序设计-实验2-类与对象

A 评分程序 答案&#xff1a; #include<iostream> #include<cstring>using namespace std;class Score{ private:string name;//记录学生姓名double s[4];//存储4次成绩&#xff0c;s[0]和s[1]存储2次随堂考试&#xff0c;s[2]存储期中考试&#xff0c;s[3]存储期…

推荐一个好用的命令行工具ShellGPT

ShellGPT 配置安装常用功能聊天写命令并执行 高级功能函数调用角色管理 总结 这两天突然想到&#xff0c;现有的很多工具都在被大模型重构&#xff0c;比如诞生了像perplexity.ai 这种新交互形式的搜索引擎&#xff0c;就连wps也推出了AI服务&#xff0c;甚至都可以直接生成ppt…

code-server容器webpack的ws无法连接解决方法

TLDR 通过指定client的wsrul去连接ws devServer.client.webSocketURL ‘wss://<Forwarded uri>/ws’ 拓扑 1、code-server: 用于编写代码、启动webpack dev-server 服务&#xff1b;[https://<domain>:8001] 2、webpack: 用于浏览dev-server服务&#xff1b;[ht…

AI实景直播间的打造指南,简单四步曲,轻松打造24小时不间断直播。

AI实景直播间的打造指南&#xff1a;简单四步曲&#xff0c;轻松打造24小时不间断直播&#xff01; 随着直播时代的来临&#xff0c;ai自动化直播系统成为商家们蓬勃发展的选择。本文将为您介绍如何借助智享ai自动直播&#xff0c;轻松打造一个属于自己的24小时不间断直播间。…

「 网络安全常用术语解读 」SBOM主流格式SWID详解

国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;International Electrotechnical Commission&#xff0c;IEC&#xff09;发布了ISO/IEC 19770-2软件标识&#xff08;Software Identification&#xff0c;SWID&#xff09;标签标准&#xff0c;该标准定…

ctfshow web入门 sql注入 web224--web233

web224 扫描后台&#xff0c;发现robots.txt&#xff0c;访问发现/pwdreset.php &#xff0c;再访问可以重置密码 &#xff0c;登录之后发现上传文件 检查发现没有限制诶 上传txt,png,zip发现文件错误了 后面知道群里有个文件能上传 <? _$GET[1]_?>就是0x3c3f3d60245…

k8s环境prometheus operator监控集群外资源

文章目录 k8s环境添加其他节点基于prometheus operator k8s环境prometheus operator添加node-exporter方式一&#xff1a;通过 ServiceMonitor 方式可以写多个监控node节点运行 external-node.yaml查看资源有没有被创建热更新 外部需要被监控服务器安装 node-exporterdocker 方…

基于SSM的宠物领养平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的宠物领养平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…