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

相关文章

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis