MyBatis-Plus 基础:LambdaQueryWrapper详解与实例

2024-01-01 15:52

本文主要是介绍MyBatis-Plus 基础:LambdaQueryWrapper详解与实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LambdaQueryWrapper 是 MyBatis-Plus(一个 MyBatis 的增强工具)中用于构造 SQL 查询条件的一个非常强大的工具。它允许你以 Lambda 表达式的方式构建查询条件,从而避免了硬编码字段名,提供了类型安全,并且使得代码更加清晰和易于维护。

以下是 LambdaQueryWrapper 的一些基本操作和使用示例:

  1. 初始化

首先,你需要初始化一个 LambdaQueryWrapper 对象:

LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();

其中,User 是你的实体类。
2. 等于查询

使用 eq 方法进行等于查询:

queryWrapper.eq(User::getName, "John");

这将会生成 SQL 语句中的 name = 'John' 部分。
3. 模糊查询

使用 like 方法进行模糊查询:

queryWrapper.like(User::getName, "Jo");

这将会生成 SQL 语句中的 name LIKE '%Jo%' 部分。
4. 不等于查询

使用 ne 方法进行不等于查询:

queryWrapper.ne(User::getAge, 25);

这将会生成 SQL 语句中的 age <> 25 部分。
5. 大于、小于、大于等于、小于等于查询

使用 gt, lt, ge, le 方法进行范围查询:

queryWrapper.gt(User::getAge, 18);  // age > 18
queryWrapper.lt(User::getAge, 60);  // age < 60
queryWrapper.ge(User::getAge, 20);  // age >= 20
queryWrapper.le(User::getAge, 50);  // age <= 50
  1. 排序

使用 orderByAscorderByDesc 方法进行排序:

queryWrapper.orderByAsc(User::getAge);  // 按 age 升序排列
queryWrapper.orderByDesc(User::getName);  // 按 name 降序排列
  1. 自定义SQL

如果你需要自定义 SQL 片段,可以使用 apply 方法:

queryWrapper.apply("date_format(create_time, '%Y-%m-%d') = {0}", "2023-10-23");
  1. 选择字段

使用 select 方法选择需要查询的字段:

queryWrapper.select(User::getId, User::getName);  // 只查询 id 和 name 字段
  1. 逻辑操作
  • 使用 andor 进行逻辑与和逻辑或操作:
queryWrapper.eq(User::getType, 1).and(wrapper -> wrapper.gt(User::getAge, 18).lt(User::getAge, 60));  // type = 1 AND age > 18 AND age < 60
queryWrapper.eq(User::getType, 1).or().eq(User::getStatus, 1);  // type = 1 OR status = 1
  1. 查询
  • 最后,你可以将构造好的 LambdaQueryWrapper 对象传递给 MyBatis-Plus 的 Mapper 或 Service 方法进行查询:
List<User> users = userMapper.selectList(queryWrapper);  // 查询满足条件的用户列表

注意:以上代码示例是基于 MyBatis-Plus 的常见用法,但具体版本可能会有所不同,建议查阅你所使用的 MyBatis-Plus 版本的官方文档以获取最准确的信息。

这篇关于MyBatis-Plus 基础:LambdaQueryWrapper详解与实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559755

相关文章

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

Java中的Cursor使用详解

《Java中的Cursor使用详解》本文介绍了Java中的Cursor接口及其在大数据集处理中的优势,包括逐行读取、分页处理、流控制、动态改变查询、并发控制和减少网络流量等,感兴趣的朋友一起看看吧... 最近看代码,有一段代码涉及到Cursor,感觉写法挺有意思的。注意是Cursor,而不是Consumer

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

Java 8 Stream filter流式过滤器详解

《Java8Streamfilter流式过滤器详解》本文介绍了Java8的StreamAPI中的filter方法,展示了如何使用lambda表达式根据条件过滤流式数据,通过实际代码示例,展示了f... 目录引言 一.Java 8 Stream 的过滤器(filter)二.Java 8 的 filter、fi

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring