Mybatis-plus动态条件查询QueryWrapper的使用

news2024/11/29 6:27:08

Mybatis-plus动态条件查询QueryWrapper的使用

一:queryWrapper介绍

queryWrapper是mybatis plus中实现查询的对象封装操作类,可以封装sql对象,包括where条件,order by排序,select哪些字段等等,他的层级关系如下图:

Wrapper:条件构造抽象类,最顶端父类;
AbstractWrapper:用于查询条件封装,生成sql的where条件;
AbstractLambdaWrapper:Lambda语法使用Wrapper统一处理解析lambda获取column。
LambdaQueryWrapper:用于lambda语法使用的查询Wrapper;
LambdaUpdateWrapper:Lambda更新封装Wrapper;
QueryWrapper:Entity对象封装操作类,不是用lambda;
UpdateWrapper:Update条件封装,用于Entity对象更新操作。

在这里插入图片描述

二:queryWrapper示例

2.1-案例一:根据name模糊查看未删除的用户列表信息

过滤条件:

name 用户名称 ,模糊查看
del_flag = 0
按照create_time创建时间降序
sql实现:

select * from t_user
where del_flag = 0
<if test ="name!=null and ''!=name">
    and name like concat('%',#{name},'%')
</if>
order by create_time desc

queryWrapper实现:

/**
 * 案例一:根据name模糊查看未删除的用户列表信息
 * @param name
 * @return
 */
@RequestMapping("/list")
public Map<String,Object> getList(@RequestParam String name){
    Map<String,Object> result = new HashMap<>();

	//构建一个查询的wrapper
    QueryWrapper<User> wrapper = new QueryWrapper<User>();
    //name不为空时,组装模糊查询条件
    wrapper.like(StringUtils.isNotBlank(name),"name",name);
    //未删除
    wrapper.eq("del_flag",0);
    //创建时间降序
    wrapper.orderByDesc("create_time");

    List<User> list = userMapper.selectList(wrapper);
    result.put("data",list);
    return result;
}

2.2-案例二:查看姓李的并且邮箱不为空的用户列表

sql实现:

select * from t_user
where del_flag = 0
and name like concat('李','%')
and email is not null
order by create_time desc

queryWrapper实现:

/**
 * 案例二:查看姓张的并且邮箱不为空的用户列表
 * @return
 */
@RequestMapping("/list2")
public Map<String,Object> getList2(){
    Map<String,Object> result = new HashMap<>();

    //构建一个查询的wrapper
    QueryWrapper<User> wrapper = new QueryWrapper<User>();
    //姓张的
    wrapper.likeRight("name","张");
    //邮箱不为空
    wrapper.isNotNull("email");
    //未删除
    wrapper.eq("del_flag",0);
    //创建时间降序
    wrapper.orderByDesc("create_time");

    List<User> list = userMapper.selectList(wrapper);
    result.put("data",list);
    return result;
}

2.3-案例三:年龄范围查询(20-30之间的)

sql实现:

select * from t_user
where del_flag=0
and age between 20 and 30
order by create_time desc

queryWrapper实现:

/**
 * 案例三:年龄范围查询(20-30之间的)
 * @return
 */
@RequestMapping("/list3")
public Map<String,Object> getList3(){
    Map<String,Object> result = new HashMap<>();

    //构建一个查询的wrapper
    QueryWrapper<User> wrapper = new QueryWrapper<User>();
    //年龄20-30之间的
    wrapper.between("age",20,30);
    //未删除
    wrapper.eq("del_flag",0);
    //创建时间降序
    wrapper.orderByDesc("create_time");

    List<User> list = userMapper.selectList(wrapper);
    result.put("data",list);
    return result;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言初阶】指针篇—下

目录 4. 指针运算4.1 指针-整数4.2 指针-指针4.3 指针的关系运算 5. 指针和数组6. 二级指针7. 指针数组 C语言初阶—指针上 点击跳转 4. 指针运算 指针 整数指针-指针指针的关系运算 4.1 指针整数 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {in…

【VALSE2023】0610 胡瀚《视觉自监督学习年度进展评述》

from&#xff1a; https://www.bilibili.com/video/BV1J44y1w79r 文章目录 自监督学习年度进展技术进展趋势一&#xff1a;掩码图像建模的改进技术进展二&#xff1a;发现掩码图像建模对**大模型**比较友好技术进展三&#xff1a;针对**小模型**的掩码图像建模训练技术进展四&a…

51单片机学习--DS18B20温度读取温度报警器

需要先编写OneWire模块&#xff0c;再在DS18B20模块中调用OneWire模块的函数 先根据原理图做好端口的声明&#xff1a; sbit OneWire_DQ P3^7;接下来像之前一样把时序结构用代码模拟出来&#xff1a; unsigned char OneWire_Init(void) {unsigned char i;unsigned char Ac…

Android学习之路(1) 文本设置

Android学习之路(1) 文本 一、设置文本内容 设置文本内容的两种方式&#xff1a; 一种是在XML文件中通过属性android:text设置文本代码如下 <TextViewandroid:id"id/tv_hello"android:layout_width"wrap_content"android:layout_height"wrap_c…

54款宝藏级AIGC工具分享(claude,Midjourney,Stable Diffusion等)

随着ChatGPT的一波又一波高潮&#xff0c;生成式AI逐渐进入人们视野&#xff0c;并开始大行其道&#xff0c;正如人们所说&#xff1a;AI用的好&#xff0c;天天下班早&#xff01; 当然&#xff0c;有效的利用AI不但能下班早&#xff0c;还能在上班时间摸鱼&#xff0c;就如潘…

【AI量化模型】跑通baseline

跑通baseline 任务学习内容特征工程模型训练与验证 bug未纠错的结果 任务 教程部署在百度 AI Studio&#xff0c;可以一键fork运行代码&#xff0c;选择*v100 32g1*的配置&#xff0c;baseline运行大约20分钟&#xff0c;再加上进阶部分大约40分钟 学习内容 特征工程 构建基…

数据结构(c++语言版) 邓俊辉 第五章:二叉树学习笔记

5.1二叉树及其表示 树是由节点和边组成的。 1.有根树 树是由顶点(vertex)和边(edge)组成。树的每个顶点也叫节点(node)。 2.深度与层次 由树的连通性&#xff0c;每一节点与根都有一条路径相连&#xff1a;根据树的无环性&#xff0c;由根通往每个节点的路径必然唯一。 节点v…

在e2studio中使用DAP进行开发调试(基于DShanMCU-RA6M5开发板)

在e2studio中使用DAP进行开发调试&#xff08;基于DShanMCU-RA6M5开发板&#xff09; 百问网瑞萨MCU文档教程在线学习&#xff1a; http://renesas-docs.100ask.net 目录 文章目录 在e2studio中使用DAP进行开发调试&#xff08;基于DShanMCU-RA6M5开发板&#xff09;目录1. 资…

【GPT-3 】创建能写博客的AI工具

一、说明 如何使用OpenAI API&#xff0c;GPT-3和Python创建AI博客写作工具。 在本教程中&#xff0c;我们将从 OpenAI API 中断的地方继续&#xff0c;并创建我们自己的 AI 版权工具&#xff0c;我们可以使用它使用 GPT-3 人工智能 &#xff08;AI&#xff09; API 创建独特的…

【c语言】-- 结构体

&#x1f4d5;博主介绍&#xff1a;目前大一正在学习c语言&#xff0c;数据结构&#xff0c;计算机网络。 c语言学习&#xff0c;是为了更好的学习其他的编程语言&#xff0c;C语言是母体语言&#xff0c;是人机交互接近底层的桥梁。 本章来学习结构体。 让我们开启c语言学习之…

c++:day4

1.思维导图 2.shell函数获取uid和gid&#xff0c;并用变量接 #!/bin/bashfunction fun() {read -p "输入用户名" necho uid:id -u $necho gid:id -g $n } afun echo $a3.冒泡、选择和快排代码整理 /**************************************************************…

MySQL游标(二十九)

二八佳人体似酥&#xff0c;腰悬利剑斩愚夫&#xff0c;虽然不见人头落,暗里教君骨髓枯。 上一章简单介绍了MySQL流程控制(二十八) ,如果没有看过,请观看上一章 一. 游标 一.一 什么是游标 虽然我们也可以通过筛选条件 WHERE 和 HAVING&#xff0c;或者是限定返回记录的关键…

冒泡排序 简单选择排序 插入排序 快速排序

bubblesort 两个for循环&#xff0c;从最右端开始一个一个逐渐有序 #include <stdio.h> #include <string.h> #include <stdlib.h>void bubble(int *arr, int len); int main(int argc, char *argv[]) {int arr[] {1, 2, 3, 4, 5, 6, 7};int len sizeof(…

yolov5代码解读之​detect.py文件【超详细的好吗!点进来看阿很用心的!】

yolov5的代码一直在更新&#xff0c;所以你们代码有些部分可能不太一样&#xff0c;但大差不差。 先给大家看一下项目结构&#xff1a;&#xff08;最好有这个项目&#xff0c;且跑通过&#xff09; detect.py文件&#xff1a;它可以预测视频、图片文件夹、网络流等等。 如何…

重磅!百度再放大招,文心大模型3.5三大维度、20项指标遥遥领先

近日&#xff0c;清华大学新闻与传播学院沈阳团队发布《大语言模型综合性能评估报告》&#xff08;下文简称“报告”&#xff09;&#xff0c;报告显示百度文心一言在三大维度20项指标中综合评分国内第一&#xff0c;超越ChatGPT&#xff0c;其中中文语义理解排名第一&#xff…

Crond和sudo

目录 前言 一、Crond &#xff08;一&#xff09;、一次性任务 &#xff08;二&#xff09;、周期性任务 1./etc/crontab中加入 2.使用crontab命令编辑计划任务 二、sudo 1.sudo概念 2.sudo提权 总结 前言 crond是linux下用来周期性的执行某种任务或等待处理某些事件的…

[CKA]考试之Sidecar代理

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Context 将一个现有的 Pod 集成到 Kubernetes 的内置日志记录体系结构中&#xff…

关于多媒体视频翻译,你了解多少?

近年来&#xff0c;随着多媒体视频行业的快速发展&#xff0c;观看中外视频已成为数千万人的日常习惯&#xff0c;进而促进了视频翻译需求量的不断增加。那么&#xff0c;如何做好多媒体视频翻译服务&#xff0c;关于多媒体视频翻译&#xff0c;你了解多少&#xff1f; 据了解&…

浅谈智能低压电动机保护控制器的研发及其应用

安科瑞 华楠 摘 要&#xff1a;低压电动机保护控制器是整套工业生产自动化电动机拖动系统中的重要的核心器件&#xff0c;可以实现工业自动化生产过程中电动机远程系统监控与控制的智能化管理&#xff0c;帮助用户及 时了解电动机的运行状况&#xff0c;为电动机设备状态分析…

【算法系列 | 7】深入解析查找算法之—布隆过滤器

序言 心若有阳光&#xff0c;你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏&#xff0c;希望能帮助大家很好的了解算法。主要深入解析每个算法&#xff0c;从概念到示例。 我们一起努力&#xff0c;成为更好的自己&#xff01; 今天第3讲&#xff0c;讲一…