MyBatis-Plus框架QueryWrapper查询构造器的使用入门

news/2025/2/8 0:46:29/文章来源:https://www.cnblogs.com/xiins/p/18703532

QueryWrapper 是 MyBatis-Plus 框架提供的一个强大的查询构造器,用于方便地构建 SQL 查询条件,避免手写复杂的 SQL 语句。下面从基本使用、常用方法、链式调用和复杂查询示例等方面详细介绍 QueryWrapper 的使用。

1. 引入依赖

首先要确保项目中已经引入了 MyBatis-Plus 的依赖。如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>最新版本号</version>
</dependency>

2. 基本使用

以下是一个简单的示例,展示如何使用 QueryWrapper 查询 User 表中年龄大于 18 岁的所有用户:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo2.entity.User;
import com.example.demo2.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> getUsersByAgeGreaterThan18() {// 创建 QueryWrapper 对象QueryWrapper<User> queryWrapper = new QueryWrapper<>();// 添加查询条件:年龄大于 18queryWrapper.gt("age", 18);// 执行查询return userMapper.selectList(queryWrapper);}
}

在这个示例中:

  • 首先创建了一个 QueryWrapper<User> 对象,泛型 User 表示查询的实体类。
  • 然后使用 gt 方法添加查询条件,gtgreater than 的缩写,用于表示大于。
  • 最后调用 userMapper.selectList(queryWrapper) 方法执行查询,返回符合条件的用户列表。

3. 常用方法

3.1 等值查询(eq)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "John"); // 查询姓名为 John 的用户
List<User> users = userMapper.selectList(queryWrapper);

3.2 模糊查询(like)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "J"); // 查询姓名中包含 J 的用户
List<User> users = userMapper.selectList(queryWrapper);

3.3 范围查询(between)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 18, 30); // 查询年龄在 18 到 30 之间的用户
List<User> users = userMapper.selectList(queryWrapper);

3.4 排序查询(orderByAsc/orderByDesc)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("age"); // 按年龄升序排序
List<User> users = userMapper.selectList(queryWrapper);

3.5 逻辑查询(and/or)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("gender", "male").and(wrapper -> wrapper.gt("age", 18)); 
// 查询性别为男且年龄大于 18 岁的用户
List<User> users = userMapper.selectList(queryWrapper);

4. 链式调用

QueryWrapper 支持链式调用,让代码更加简洁:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
List<User> users = userMapper.selectList(queryWrapper.eq("gender", "male").gt("age", 18).orderByAsc("age")
);

5. 复杂查询示例

以下是一个复杂查询的示例,查询姓名中包含 J 且年龄在 20 到 30 岁之间,按年龄降序排序的用户:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "J").between("age", 20, 30).orderByDesc("age");
List<User> users = userMapper.selectList(queryWrapper);

6. 条件判断

在实际开发中,查询条件可能是动态的,你可以根据不同的情况添加条件:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
String name = "J";
Integer minAge = 20;
Integer maxAge = 30;if (name != null && !name.isEmpty()) {queryWrapper.like("name", name);
}
if (minAge != null && maxAge != null) {queryWrapper.between("age", minAge, maxAge);
}List<User> users = userMapper.selectList(queryWrapper);

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

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

相关文章

linux vm tools 问题

转载vmware tools 失效问题解决方式(Ubuntu 22 以及其他系统) - 知乎 今天新装了Kubuntu 以及 Ubuntu 版本均为 22x,一如既往的操作,最后发现VMware tools失效。 尝试输入vmware-user发现又可以了。 具体表现: 1、窗口分辨率可以缩放,无法复制粘贴,无法复制粘贴文件。 2…

【shell脚本】轻松搞定打包与Shell部署

本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作; 1. profiles指定不同环境的配置 通常一套程序分为了很多个部署环境:开发,测试,uat,线上 等,我们要想对这些环境区分配置文件,可以通过两种方式: 1、通过a…

01 HTML详解

一. HTML语言 HTML是超文本标记语言。超文本:文本、图片、声音、视频、表格、链接等等。 标记:由许许多多的标签组成。二. HTML结构 HTML 代码是由 "标签" 构成的。 形如: <body>hello</body>标签名 (body) 放到 < > 中。大部分标签成对出现。…

HTML详解

一. HTML语言 HTML是超文本标记语言。超文本:文本、图片、声音、视频、表格、链接等等。 标记:由许许多多的标签组成。二. HTML结构 HTML 代码是由 "标签" 构成的。 形如: <body>hello</body>标签名 (body) 放到 < > 中。大部分标签成对出现。…

【Nginx】Nginx 配置页面请求不走缓存 浏览器页面禁用缓存

我是Superman丶 巴韭特锁螺丝 2025年02月07日 08:50 陕西 前言 使用缓存的优点在于减少数据传输,节省网络流量,加快响应速度;减轻服务器压力;提供服务端的高可用性;缺点在于数据的不一致问题;增加成本 Nginx作为Web缓存服务器,介于客户端和应用服务器之间,当用户通过浏…

NLog日志(三)

程序开发日志输出常用逻辑 1.应用启动和关闭添加新配置<rules><!-- 默认日志记录器(仅控制台输出) --><logger name="*" minlevel="Debug" writeTo="logconsole" /><!-- 记录应用启动 & 关闭日志 --><logger n…

XXL-CACHE v1.2.0 | 多级缓存框架

Release Notes1、【增强】多序列化协议支持:针对L2缓存,组件化抽象Serializer,可灵活扩展更多序列化协议; 2、【优化】移除冗余依赖,精简Core体积;XXL- CACHE 快速接入示例代码参考github仓库 /test 目录:https://github.com/xuxueli/xxl-cache/tree/master/xxl-cache-s…

将模型api集成到python中

1.今日成果 1-1从阿里百炼上获取使用API的代码,在本地配置好环境,运行。 1-2ollama上拉取视频理解的模型,却没有上传视频的界面,可以使用python代码加载模型 1-3huggingface上的模型可以通过transformer集成到python运行。 1-4Qwen模型本地部署的环境搭建好了 2.未解决的问…

注解反射之使用Class对象获取注解

代码如下package com.loubin;import java.lang.annotation.*; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;public class Main {public static void main(S…

ACM寒假集训第三次专题任务

ACM寒假集训第三次专题任务 一、Priority Queue 题目:解题思路: 对优先队列的直接运用,直接翻译题目即可。 AC代码: #include<iostream> #include<string> #include<queue> using namespace std; int main() {int k;string operation;priority_queue<…

一款基于 WPF 开源、功能全面的串口调试工具

前言 今天大姚给大家分享一款基于 WPF 开源(MIT License)、免费、功能全面的串口调试工具:BYSerial。 项目介绍 BYSerial是一款基于 WPF 开源(MIT License)、免费、功能全面的串口调试工具,支持中英文双语切换,具有通用串口调试工具的一般功能,如串口通讯调试、TCP通讯…

NLog日志(二)

NLog //日志输出builder.Logging.ClearProviders();builder.Logging.AddNLog("nlog.config");配置后默认自动全部输出需求:自动记录的输出到控制台,手动记录的输出到日志文件1.配置两个日志记录器 一个控制台,一个日志文件<rules><!-- 默认日志记录器(…