返回顶部
首页 > 资讯 > 精选 >mybatisplus如何实现条件查询
  • 617
分享到

mybatisplus如何实现条件查询

2023-06-30 16:06:39 617人浏览 独家记忆
摘要

本篇内容介绍了“mybatisplus如何实现条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、wapper介绍用mp也可以方便的实

本篇内容介绍了“mybatisplus如何实现条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、wapper介绍

用mp也可以方便的实现稍复杂点的条件查询,当然了很复杂的就还是要xml编写sql了。

先看下mp的条件构造抽象类的结构:

mybatisplus如何实现条件查询

Wrapper: 条件构造抽象类,最顶端父类

AbstractWrapper: 用于查询条件封装,生成 sql 的 where 条件

QueryWrapper: Entity 对象封装操作类,不是用lambda语法

UpdateWrapper: Update 条件封装,用于Entity对象更新操作

AbstractLambdaWrapper: Lambda 语法使用 Wrapper统一处理解析lambda获取数据库字段

LambdaQueryWrapper: 用于Lambda语法使用的查询Wrapper

LambdaUpdateWrapper: Lambda 更新封装Wrapper

不过最常用的还是QueryWrapper、UpdateWrapper等这些。

套路还是那样,先创建QueryWrapper对象,然后再调用各种方法。

    // 测试条件查询    @Test    void testQueryWrapper() {        //创建对象,泛型里加上实体对象        QueryWrapper<User> wrapperUser = new QueryWrapper<>();        // 设置查询的条件        // ge表示 >= , 这里就是查询age字段,大于40的数据        wrapperUser.ge("age", 40);        // 调用查询方法中,传入wrapper对象        List<User> users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

这里就会查询表里age>=40,的数据,看下执行过程的sql语句:

mybatisplus如何实现条件查询

二、常用的条件方法

在构造条件的时候,除了上面的ge,还有很多其他的方法,这里简单介绍下比较常用的,并且贴出执行的sql。

1. gt 表示 >

        ... ...        // gt表示 > , 这里就是查询age字段,大于40的数据        wrapperUser.gt("age", 40);        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age > ? ==> Parameters: 40(Integer)

2. le 表示 <=

        ... ...        // le表示 <=, 这里就是查询age字段,小于等于40的数据        wrapperUser.le("age", 40);        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age <= ? ==> Parameters: 40(Integer)

3. lt 表示 <

        ... ...        // lt表示 &lt;, 这里就是查询age字段,小于40的数据        wrapperUser.lt("age", 40);        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age < ? ==> Parameters: 40(Integer)

4. isNull 表示 查询值为null

        ... ...        // isNull        wrapperUser.isNull("name");        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name IS NULL ==> Parameters: <==      Total: 0

5. isNotNull 表示 查询值为不为null

        ... ...        // isNotNull        wrapperUser.isNotNull("name");        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name IS NOT NULL ==> Parameters:

6. eq 表示 =

        ... ...        // eq        wrapperUser.eq("name", "大周4");        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name = ? ==> Parameters: 大周4(String)

7. ne 表示 !=

        ... ...        // eq        wrapperUser.ne("name", "大周4");        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name <> ? ==> Parameters: 大周4(String)

8. between 表示 在范围之间,包含边界值

        ... ...        // between        wrapperUser.between("age", 40, 50);        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age BETWEEN ? AND ? ==> Parameters: 40(Integer), 50(Integer)

9. notBetween 表示 在范围之外,不含边界值

        ... ...        // between        wrapperUser.notBetween("age", 40, 50);        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age NOT BETWEEN ? AND ? ==> Parameters: 40(Integer), 50(Integer)

10. notBetween 表示 在范围之外,不含边界值

        ... ...        // between        wrapperUser.notBetween("age", 40, 50);        ... ...

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age NOT BETWEEN ? AND ? ==> Parameters: 40(Integer), 50(Integer)

11. allEq 多条件查询

如果我where后面要加多个条件,可以使用allEq。先创建一个HashMap,然后把多个条件put进去,再调用allEq即可。

    @Test    void testQueryWrapper() {        QueryWrapper&lt;User&gt; wrapperUser = new QueryWrapper&lt;&gt;();        Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();        map.put("id", 5);        map.put("name", "wesson5");        map.put("age", 29);        wrapperUser.allEq(map);        List&lt;User&gt; users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND name = ? AND id = ? AND age = ? ==> Parameters: wesson5(String), 5(Integer), 29(Integer)

12. .链式编程,多条件查询

此外,还可以使用链式编程,直接在后面继续.调用别的方法。

    @Test    void testQueryWrapper() {        //创建对象,泛型里加上实体对象        QueryWrapper<User> wrapperUser = new QueryWrapper<>();        wrapperUser.eq("age", 29)                   .eq("name", "wesson5")                   .eq("id", 5);        List<User> users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age = ? AND name = ? AND id = ? ==> Parameters: 29(Integer), wesson5(String), 5(Integer)

13. or、and

默认情况下,在不调拨or()方法的情况下,是使用and()。

    @Test    void testQueryWrapper() {        //创建对象,泛型里加上实体对象        QueryWrapper<User> wrapperUser = new QueryWrapper<>();        wrapperUser.eq("age", 29)                   .or()                   .eq("name", "wesson5")                   .or()                   .eq("id", 5);        List<User> users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age = ? OR name = ? OR id = ? ==> Parameters: 29(Integer), wesson5(String), 5(Integer)

14. 嵌套or、嵌套and

查询sql经常会有嵌套or或者and的情况,可以这样写:

    @Test    void testQueryWrapper() {        //创建对象,泛型里加上实体对象        QueryWrapper<User> wrapperUser = new QueryWrapper<>();        wrapperUser.eq("age", 29)                   .or(                           i -> i.eq("name", "wesson5")                                   .or()                                   .eq("id", 5)                   );        List<User> users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND age = ? OR ( name = ? OR id = ? ) ==> Parameters: 29(Integer), wesson5(String), 5(Integer)

15. in、notIn

等于sql里的 in和not in。

    @Test    void testQueryWrapper() {        //创建对象,泛型里加上实体对象        QueryWrapper&lt;User&gt; wrapperUser = new QueryWrapper&lt;&gt;();        wrapperUser.in("id", 1, 2, 3);         List&lt;User&gt; users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND id IN (?,?,?) ==> Parameters: 1(Integer), 2(Integer), 3(Integer)

16. inSql、notinSql

inSql、notinSql可以用来子查询,比如 where id in (select * ... ...)

    @Test    void testQueryWrapper() {        //创建对象,泛型里加上实体对象        QueryWrapper<User> wrapperUser = new QueryWrapper<>();        wrapperUser.in("id", "select id from user where id < 5");        List<User> users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 AND id IN (?) ==> Parameters: select id from user where id < '5'(String)

17. last

last可以直接拼接sql到最后,只能调用一次,多次调用以最后一次为准。
注意:有sql注入的风险,慎用。

    @Test    void testQueryWrapper() {        //创建对象,泛型里加上实体对象        QueryWrapper<User> wrapperUser = new QueryWrapper<>();        wrapperUser.last("limit 1");        List<User> users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

mp执行的sql:

==>  Preparing: SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0 limit 1 ==> Parameters:

18. 指定要查询的列

只查询出指定的字段,比如"id", "name", "age"。

    @Test    void testQueryWrapper() {        //创建对象,泛型里加上实体对象        QueryWrapper<User> wrapperUser = new QueryWrapper<>();        wrapperUser.select("id", "name", "age");        List<User> users = userMapper.selectList(wrapperUser);        System.out.println(users);    }

mp执行的sql:

==>  Preparing: SELECT id,name,age FROM user WHERE deleted=0 ==> Parameters:

“mybatisplus如何实现条件查询”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: mybatisplus如何实现条件查询

本文链接: https://lsjlt.com/news/330315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mybatisplus如何实现条件查询
    本篇内容介绍了“mybatisplus如何实现条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、wapper介绍用mp也可以方便的实...
    99+
    2023-06-30
  • MybatisPlus实现多条件拼接动态查询
    1、前 言 最近在开发过程中,需要用 MybatisPlus 实现类似以下形式的 SQL 语句,动态拼接多个条件,进行查询。 select *from user_infowhere is_deleted = 0...
    99+
    2023-08-20
    mysql mybatis-plus spring boot
  • 如何实现多条件查询
    这篇文章主要讲解了“如何实现多条件查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现多条件查询”吧! 而在对用户进行查...
    99+
    2024-04-02
  • MybatisPlus条件查询方法全解
    1、是什么? MybatisPlus通过条件构造器可以组装复杂的查询条件,写一些复杂的SQL语句,从而简化我们的开发提升我们的开发效率 # 可以简单的理解为就是我们写SQL语句时where后面的条件where xxx.....
    99+
    2023-08-30
    java mysql 数据库
  • Layui如何实现多条件查询
    这篇文章主要介绍了Layui如何实现多条件查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近做一个档案系统,发现字段超多带分页的多条件查询(分页需要后端分页,传page给...
    99+
    2023-06-25
  • SSH如何实现条件查询和分页查询
    这篇文章将为大家详细讲解有关SSH如何实现条件查询和分页查询,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、QueryHelper和PageResultQueryHel...
    99+
    2024-04-02
  • mysql如何实现条件查询语句
    小编给大家分享一下mysql如何实现条件查询语句,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 在mysql中,可以使用SELECT语句和WHER...
    99+
    2024-04-02
  • MybatisPlus中的多表条件排序查询
    目录1.pom文件2.自定义返回对象3.mapper方法4.xml自定义sql5.service方法6.QueryUtil自定义的查询工具7.常量配置8.controller方法9....
    99+
    2024-04-02
  • MyBatisPlus-QueryWrapper多条件查询以及修改
    MyBatisPlus-QueryWrapper多条件查询以及修改 文章目录 MyBatisPlus-QueryWrapper多条件查询以及修改gt、ge、lt、le、isNull、isNotNulleq、nebetween、not...
    99+
    2023-08-21
    java mysql
  • MyBatisPlus-QueryWrapper多条件查询及修改方式
    目录gt、ge、lt、le、isNull、isNotNulleq、nebetween、notBetweenallEqlike、notLike、likeLeft、likeRightin...
    99+
    2024-04-02
  • MybatisPlus使用queryWrapper如何实现复杂查询
    目录使用queryWrapper实现复杂查询自定义的queryWrapper实现查询声明提要核心代码使用queryWrapper实现复杂查询 // mp实现负责查询操作 ...
    99+
    2024-04-02
  • mybatis plus实现条件查询
    目录一、wapper介绍二、常用的条件方法1. gt 表示 >2. le 表示 <=3. lt&nb...
    99+
    2024-04-02
  • MyBatisPlus查询selectOne方法实现
    一次偶然间遇到的一个问题,MyBatisPlus 自带selectOne代码中查询出来了一条数据,但是在数据库中查出来了多条数据,而代码中也没有报错!好奇之下看了源码才恍然大悟。 p...
    99+
    2023-01-11
    MyBatisPlus selectOne
  • Java开发学习(四十四)----MyBatisPlus查询语句之查询条件
    1、查询条件 前面我们只使用了lt()和gt(),除了这两个方法外,MybatisPlus还封装了很多条件对应的方法。 MybatisPlus的查询条件有很多: 范围匹配(> 、 = 、between) 模糊匹配(like) 空判定(...
    99+
    2023-09-18
    java 学习 数据库 mysql
  • redis怎么实现条件查询?
    redis怎么实现条件查询?这个问题可能是我们日常工作经常见到的。通过这个问题,希望你能收获更多。今天跟随小编一起来看解决方案吧。一、导入jar包二、实现简单的条件查询创建一个User实体类public c...
    99+
    2024-04-02
  • JpaRepository 实现简单条件查询
    目录JpaRepository 简单条件查询创建持久化类定义数据访问层接口定义业务层类定义控制器类测试应用JpaRepository 查询规范1.JpaRepository支持接口规...
    99+
    2024-04-02
  • dedecms怎么实现条件查询
    dedecms可以使用SQL查询语句来实现条件查询,操作步骤为:1、打开DedeCMS管理后台;2、导航到“数据库管理”页面;3、根据需求,编写相应的查询语句;4、点击执行按钮或相应的提交按钮来执行查询;5、查看符合查询条件的记录即可。本教...
    99+
    2023-08-03
  • mongodb如何带条件查询
    在MongoDB中,可以使用`find()`方法来执行带条件查询。以下是一些常见的带条件查询示例:1. 等于条件查询:```db.c...
    99+
    2023-09-04
    mongodb
  • MybatisPlus 查询条件为空字符串或null问题
    使用MyBatis-Plus框架进行条件查询时,会出现参数为null或空字符串也生成查询语句的情况; 解决方法: mybatisplus的条件构造器方法 eq()、like()等这些方法能支持第三个参数 condition ...
    99+
    2023-08-31
    mybatis java mysql Powered by 金山文档
  • 详解MyBatisPlus如何实现分页和查询操作
    目录1.定义查询字段2.修改分页函数接口3.修改分页实现方法4.修改控制层5.效果体验《SpringBoot整合MybatisPlus实现增删改查功能》在这篇文章中,我们详细介绍了分...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作