【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.1 模糊查询)

[3.2 排序](#3.2 排序)

[3.3 分页](#3.3 分页)

[3.4 结果封装](#3.4 结果封装)

[3.5 模糊查询不匹配值](#3.5 模糊查询不匹配值)

[3.6 在列表中(in)](#3.6 在列表中(in))

[3.7 不在列表中(notIn)](#3.7 不在列表中(notIn))

[3.8 分组](#3.8 分组)

四、方法和属性

五、mybatis-plus版本不同


一、依赖

XML 复制代码
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>

二、基本使用

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

java 复制代码
public class BannerItem {
    private Long id;
    private String name;
    private String img;
    private String keyword;
    private Integer type;
    private Long bannerId;
}

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

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

三、LambdaQueryWrapper条件构造

java 复制代码
// 等于
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 模糊查询

java 复制代码
// 模糊查询
wrapper.like(BannerItem::getName, "%zhangsan%");

3.2 排序

java 复制代码
// 排序
wrapper.orderByDesc(BannerItem::getCreateTime);

3.3 分页

java 复制代码
// 分页
Page<BannerItem> page = new Page<>(1, 10);
wrapper.page(page);

3.4 结果封装

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

3.5 模糊查询不匹配值

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

3.6 在列表中(in)

java 复制代码
// 使用列表形式
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)

java 复制代码
// 使用列表形式
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 分组

java 复制代码
// 假设我们有一个 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版本不同,方法和属性有略微不同,请理性对待!

相关推荐
charlie1145141919 小时前
嵌入式C++工程实践——第13篇:第一次重构 —— enum class取代宏,类型安全的开始
开发语言·c++·vscode·stm32·安全·重构·现代c++
jiayong239 小时前
第 13 课:分页、页码状态和 URL 同步
开发语言·前端·javascript·vue.js·学习
Oliver_LaVine9 小时前
java项目启动报错:CreateProcess error=206, 文件名或扩展名太长
java·linux·jenkins
CHANG_THE_WORLD9 小时前
C++ 文件读取函数完全指南
开发语言·c++
阿正的梦工坊9 小时前
JavaScript 闭包 × C++ 类比:彻底搞懂闭包
开发语言·javascript·c++
赵优秀一一9 小时前
SQLAlchemy学习记录
开发语言·数据库·python
无限进步_9 小时前
【C++】寻找字符串中第一个只出现一次的字符
开发语言·c++·ide·windows·git·github·visual studio
码农周9 小时前
告别大体积PDF!基于PDFBox的Java压缩工具
java·spring boot
孬甭_10 小时前
字符函数及字符串函数
c语言·开发语言
devilnumber10 小时前
java中Redisson ,jedis,Lettuce和Spring Data Redis的四种深度对比和优缺点详解
java·redis·spring