MyBatis-Plus条件构造器[常用的模糊查询、排序查询、逻辑查询和指定字段查询案例]

news2024/12/22 19:45:22

系列文章目录

Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客 

Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客
MyBaits-Plus中@TableField和@TableId用法_心态还需努力呀的博客-CSDN博客

MyBatis-Plus中的更新操作(通过id更新和条件更新)_心态还需努力呀的博客-CSDN博客

MyBatis-Plus删除操作知识点总结_心态还需努力呀的博客-CSDN博客_mybatis-plus删除

MyBatis-Plus配置之基础配置(SpringBoot)_心态还需努力呀的博客-CSDN博客

注:上述所列只是部分文章,本系列还在更新中~感兴趣可看专栏哦~


文章目录

目录

系列文章目录

文章目录

前言

1.1 like

1.2 notLike

1.3 likeLeft

1.4 likeRight

二、排序查询

2.1 orderBy

2.2 orderByAsc

2.3 orderByDesc

三、逻辑查询

3.1 and

3.2 or

四、指定字段字段

总结


前言

MyBatis-Plus中的各种常用的方法已经总结完了,基本上能完成单表中的大部分操作。还有一小部分操作就是用户的搜索,这里就会使用到模糊查询去展示给用户搜索到的内容。内容也可排序返回给展示到前端页面,也会用到逻辑查询和只查询到指定字段显示到页面。应对这种需求,MP也给我们提供了很多的方法,下面我们一一用这些常用的方法写案例带大家理解~

首先大家要明白条件构造器就是我们的QueryWrapper。今天我们学的就是QueryWrapper下提供的条件构造。


一、模糊查询

模糊查询提供了四个方法:

1.1 like

  • LIKE '%值%'
  • 例: like("name", "王")--->name like '%王%'

1.2 notLike

  • NOT LIKE '%值%'
  • 例: notLike("name", "王")--->name not like '%王%'

1.3 likeLeft

  • LIKE '%值'
  • 例: likeLeft("name", "王")--->name like '%王'

1.4 likeRight

  • LIKE '值%'
  • 例: likeRight("name", "王")--->name like '王%'

我们以第四个likeRight方法做测试:

编写testLikeRight()测试方法,查询所有用户名以‘哈’开头的用户信息。代码编写如下:

//模糊查询  like----‘%值%’、notlike ----NOT LIKE'%值%'、likeLeft-----'%值'、likeRight-----'值%'
    @Test
    public void testLikeRight(){
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        //用户名以‘哈’开头的用户
        wrapper.likeRight("user_name","哈");
        List<User> users = userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

通过查看效果图(下图所示),生成的sql代码条件是user_name LIKE,后面是‘哈%‘。执行结果也可看出查询到的用户都是以‘哈‘开头的。测试成功~

 

二、排序查询

2.1 orderBy

  • 排序:ORDER BY 字段, ...
  • 例: orderBy(true, true, "id", "name")--->order by id ASC,name ASC

2.2 orderByAsc

  • 排序:ORDER BY 字段, ... ASC
  • 例: orderByAsc("id", "name")--->order by id ASC,name ASC

注:对比orderBy和orderByAsc可发现orderBy方法默认就是升序排序。两者效果一样,但第二种可读性强一些。

2.3 orderByDesc

  • 排序:ORDER BY 字段, ... DESC
  • 例: orderByDesc("id", "name")--->order by id DESC,name DESC

我们以降序排序为例展开测试:

编写testOrderDesc()的测试方法,将所有用户以id降序排序输出用户信息。编写代码如下:

//排序查询
    //orderBy 默认升序、orderByAsc 升序、orderByDesc 降序
    @Test
    public void testOrderDesc(){
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        //以id降序为例
        wrapper.orderByDesc("user_id");
        List<User> users = userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

 通过查看效果图(下图所示),生成的sql代码通过user_id进行DESC降序排序。执行结果也可看出查询到的用户信息user_id也是从最大的开始显示,然后是第二大。。。测试成功~

 

三、逻辑查询

3.1 and

默认查询条件之间就是and,以前的测试用例中都展示过,这里就不在演示了。

3.2 or

注意事项:

主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)

  • 例: eq("id",1).or().eq("name","老王")--->id = 1 or name = '老王'

下面我们就编写测试方法testOr()测试or的用法,我们来查询用户名为心态或者为李四的用户信息,代码如下:

//逻辑查询
    //or、and
    @Test
    public void testOr(){
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        //查询用户名为心态或者为李四的用户信息
        wrapper.eq("user_name","心态")
                .or()//或者
                .eq("user_name","李四");
        List<User> users = userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

执行上述代码,效果图如下。

可看到生成的sql中条件之间是以or连接的。执行出来两条用户信息,分别是李四的用户信息和心态的用户信息。说明测试成功~ 

 

四、指定字段字段

这里说的就是select的用法

  • 例: select("id", "name", "age")

编写测试方法testSelect(),我们查询用户名为心态信息,只显示用户名、邮箱。测试代码如下:

//指定字段查询
    //select
    @Test
    public void testSelect(){
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        //查询用户名为心态信息,只显示用户名、邮箱
        wrapper.eq("user_name","心态")
                //只查询用户名、邮箱字段
                .select("user_name","user_email");
        List<User> users = userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

执行效果图如下:

可看到生成的sql代码查询的字段不是默认的全字段了,而是上述指定的用户名和邮箱字段。查询出的结果也是有这两个字段有值,其他的都是null。

 


 

总结

常用的条件构造器已经展示完了,还有一些不常用的大家如果想看可打开MP官网,在左边栏的条件构造器中查找要用的即可。但基本上我们大多数MP的用法也就这些,即可满足开发中大部分的需求。还有就是要写的sql难时,也可用MyBatis的方法在xml里写sql用自定义的方法。反正实现方法有很多,能用自带的就是比较方便快捷一些~

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

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

相关文章

2.2 反相放大器、高输入电阻反相放大器、反相高压放大器

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

【cocos源码学习】解决cocos2d-x-4.0 Android Demo构建遇到的问题

环境 硬件&#xff1a;macbook pro 四核Intel Core i7系统&#xff1a;macOS Big Sur 11.4.2、 xcode Version 13.1 、cmake 3.20.5软件&#xff1a;iterm2 Build 3.4.8、zsh 5.8、Android Studio Dolphin | 2021.3.1cocos2d-x v4 &#xff1a; 官方下载压缩包 http://cocos2d…

目标检测算法——YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)

>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/v7目标检测算法来啦 ~ 计算机视觉——致力于目标检测领域科研Tricks改进与推荐 | 主要包括Backbone、Neck、Head、普通注意力机制、自注意力机制Transformer、Swin Transformer v2,各…

Java中Set集合的使用和底层原理

文章目录Set系列集合介绍Set集合概述HashSet无序原理Set集合对象去重LinkedHashSetTreeSet排序规则Set系列集合介绍 Set集合概述 Set系列集合特点: 无序&#xff1a;存取数据的顺序是不一定的, 当数据存入后, 集合的顺序就固定下来了 不重复&#xff1a;可以去除重复 无索引&…

HTML期末学生大作业:中华传统文化【苏绣手工艺】带psd设计图(15页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

线程的基本操作以及线程的状态

目录 &#x1f433;今日良言:得之坦然&#xff0c;失之淡然&#xff0c;争取必然&#xff0c;顺其自然。 &#x1f42f;一、线程的基本操作 &#x1f42d;1.线程的创建 &#x1f42d;2.线程的中断 &#x1f42d;3.线程的等待 &#x1f42d;4.获取线程实例 &#x1f42d;…

[附源码]计算机毕业设计学分制环境下本科生学业预警帮扶系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【POJ No. 3264】区间最值差 Balanced Lineup

【POJ No. 3264】区间最值差 Balanced Lineup 北大OJ 题目地址 其实这道题 之前也做过一次了 http://t.csdn.cn/0YZgC 不过上次是用ST 做的。这次换做 分块来实现。 【题意】 每天挤奶时&#xff0c;约翰的N 头奶牛&#xff08;1≤N≤50,000&#xff09;都以相同的顺序排队…

【网络工程】7、实操-万达酒店综合项目(一)

接上篇《6、防火墙介绍及配置实操》 之前我们讲解了防火墙的基础知识以及相应的实操案例&#xff0c;本篇我们结合之前的交换机、路由器及防火墙的知识&#xff0c;进行一个酒店网络项目的实战。 本篇主要介绍一下酒店网络项目的整体需求文档。 一、项目背景 为规范万达美华…

tensorflow fashion_mnist数据集模型训练及预测

✨ 博客主页&#xff1a;小小马车夫的主页 ✨ 所属专栏&#xff1a;Tensorflow 文章目录前言一、环境二、fashion_mnist数据集介绍三、fashion_mnist数据集下载和展示四、数据预处理五、构建模型和训练模型六、模型预测总结前言 前面介绍mnist手写数字集训练&#xff0c;本文对…

自制肥鲨HDO2电源降压延长线,支持3S~6S动力电池

自制肥鲨HDO2电源降压延长线&#xff0c;支持3S~6S动力电池1. 问题源由2. 破题思路2.1 10元大钞搞定2.2 两个毛爷爷搞定3. 解决方案4. 最终延长线产出4.1 裸照4.2 成品5. 花絮1. 问题源由 源由&#xff1a; 电池盒电源线接触不良。 肥鲨眼镜的电源盒问题由来已久&#xff0c;…

SecureCRT隧道,跳板机+端口转发,内网穿透

背景 ServerA(Linux系统)&#xff1a; 内网&#xff1a;192.168.111.201 公网&#xff1a;10.121.8.88&#xff08;虚构的ip方便理解&#xff09; ServerB&#xff1a; 内网&#xff1a;192.168.111.202 本机&#xff1a; 安装有SecureCRT软件 注意上图中的箭头。箭头指向可…

Android动画——使用动画启动Activity

1、使用动画启动Activity概述 我们在Android开发应用时&#xff0c;会遇到一个页面跳转到另一个页面的情况&#xff0c;这时候我们如果使用动画过渡会使得页面更加的流畅。这是一个滑动式的进入和退出的动画可以看到Android的过渡动画可以在不同状态之间建立视觉联系。您可以为…

find 命令这 7 种高级用法

可以很肯定地说&#xff0c;find 命令是 Linux 后台开发人员必须熟知的操作之一&#xff0c;除非您使用的是 Windows Server。 对于技术面试&#xff0c;它也是一个热门话题。让我们看一道真题&#xff1a; 如果你的 Linux 服务器上有一个名为 logs 的目录&#xff0c;如何删…

MySQL性能调优——索引篇

MySQL为什么会选错索引 使用explain命令可以查看查询语句使用了具体使用了哪个索引&#xff0c;比如 explain select * from t where a between 10000 and 20000;查询结果如图所示。 选择索引是优化器的工作 优化器选择索引的目的是想找到一个最优的执行方案&#xff0c;并…

08_线程池

08_线程池前言Callable接口ThreadPoolExecutor**为什么用线程池****线程池的好处**架构说明创建线程池底层实现线程池的重要参数拒绝策略线程池底层工作原理问题二: 线程池使用过吗?谈谈在生产上如何设置的参数?线程池的拒绝策略你谈谈?工作中单一的/固定数的/可变数的三种创…

设计模式 之 行为型模式

设计模式 之 行为型模式 模式 & 描述包括行为型模式 这些设计模式特别关注对象之间的通信。责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 命令模式&#xff08;Command Pattern&#xff09;解释器模式&#xff08;Interpreter Pattern&#xff09;…

Web 性能指标

Web 性能指标 对于 Web 开发人员来说&#xff0c;如何衡量一个 Web 页面的性能一直是一个难题。 最初&#xff0c;我们使用 Time to First Byte、DomContentLoaded 和 Load 这些衡量文档加载进度的指标&#xff0c;但它们不能直接反应用户视觉体验。 为了能衡量用户视觉体验…

[附源码]计算机毕业设计springboot志愿者服务平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[数据结构]八大排序算法总结

作者&#xff1a; 华丞臧专栏&#xff1a;【数据结构】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。推荐一款刷题网站 &#x1f449; LeetCode刷题网站 目录 一、排序的概念及其运用 1.1排…