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


    系列文章目录

    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()测试方法,查询所有用户名以‘哈’开头的用户信息。代码编写如下:

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

    通过查看效果图(下图所示),生成的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降序排序输出用户信息。编写代码如下:

    1. //排序查询
    2. //orderBy 默认升序、orderByAsc 升序、orderByDesc 降序
    3. @Test
    4. public void testOrderDesc(){
    5. QueryWrapper wrapper=new QueryWrapper<>();
    6. //以id降序为例
    7. wrapper.orderByDesc("user_id");
    8. List users = userMapper.selectList(wrapper);
    9. for (User user : users) {
    10. System.out.println(user);
    11. }
    12. }

     通过查看效果图(下图所示),生成的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的用法,我们来查询用户名为心态或者为李四的用户信息,代码如下:

    1. //逻辑查询
    2. //or、and
    3. @Test
    4. public void testOr(){
    5. QueryWrapper wrapper=new QueryWrapper<>();
    6. //查询用户名为心态或者为李四的用户信息
    7. wrapper.eq("user_name","心态")
    8. .or()//或者
    9. .eq("user_name","李四");
    10. List users = userMapper.selectList(wrapper);
    11. for (User user : users) {
    12. System.out.println(user);
    13. }
    14. }

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

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

     

    四、指定字段字段

    这里说的就是select的用法

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

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

    1. //指定字段查询
    2. //select
    3. @Test
    4. public void testSelect(){
    5. QueryWrapper wrapper=new QueryWrapper<>();
    6. //查询用户名为心态信息,只显示用户名、邮箱
    7. wrapper.eq("user_name","心态")
    8. //只查询用户名、邮箱字段
    9. .select("user_name","user_email");
    10. List users = userMapper.selectList(wrapper);
    11. for (User user : users) {
    12. System.out.println(user);
    13. }
    14. }

    执行效果图如下:

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

     


     

    总结

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

  • 相关阅读:
    Linux 搭建nginx redis mysql rabbitmq以及配置SSL
    解释 Git 的基本概念和使用方式
    ARM、x86 劲敌再度突袭:基于RISC-V 的首台笔记本将于今年面世
    python-自动化篇-终极工具-用GUI自动控制键盘和鼠标-pyautogui-键盘
    会声会影2023最新旗舰版下载功能介绍
    用户促活留存新方式——在APP中嵌入小游戏
    TS —— TS的基础知识点
    算法|每日一题|做菜顺序|贪心
    799. 香槟塔
    学成在线第六天
  • 原文地址:https://blog.csdn.net/weixin_52258054/article/details/128142253