Mybatis-Plus查询投影与查询条件设置过程

 更新时间:2025年11月04日 08:51:09   作者:兔子队列  
文章介绍了查询投影、聚合查询、分组查询、分页查询、排序查询和查询条件设置等内容,涵盖了如何使用MyBatis Plus(MP)进行各种查询操作,包括lambda表达式、范围匹配、模糊匹配、空判定、包含性匹配、分组、排序等

查询投影

目前我们在查询数据的时候,什么都没有做默认就是查询表中所有字段的内容

而查询投影即不查询所有字段,只查询出指定内容的数据

查询指定字段

  • lambda格式

  • 非lambda格式

//查询指定字段
        //SELECT id,name,age FROM person
        //LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<Person>();
        //lqw.select(Person::getId,Person::getName,Person::getAge);
        QueryWrapper<Person> lqw = new QueryWrapper<Person>();
        lqw.select("id","name","age","tel");
        List<Person> personList = personDao.selectList(lqw);
        System.out.println(personList);

聚合查询

聚合函数查询,完成count、max、min、avg、sum的使用

  • count:总记录数
  • max:最大值
  • min:最小值
  • avg:平均值
  • sum:求和

        QueryWrapper<Person> lqw = new QueryWrapper<Person>();
        //lqw.select("count(*) as count");
        //SELECT count(*) as count FROM user
        //lqw.select("max(age) as maxAge");
        //SELECT max(age) as maxAge FROM user
        //lqw.select("min(age) as minAge");
        //SELECT min(age) as minAge FROM user
        //lqw.select("sum(age) as sumAge");
        //SELECT sum(age) as sumAge FROM user
        lqw.select("avg(age) as avgAge");
        //SELECT avg(age) as avgAge FROM user
        List<Map<String, Object>> personList = personDao.selectMaps(lqw);
        System.out.println(personList);

分组查询

//分组查询
        QueryWrapper<Person> lqw = new QueryWrapper<Person>();
        lqw.select("count(*) as count,tel");
        lqw.groupBy("tel");
        List<Map<String, Object>> personList = personDao.selectMaps(lqw);
        System.out.println(personList);

注意:

聚合与分组查询,无法使用lambda表达式来完成

MP只是对MyBatis的增强,如果MP实现不了,可以直接在DAO接口中使用MyBatis的方式实现

查询条件设置

前面只使用了lt()和gt(),除了这两个方法外,MP还封装了很多条件对应的方法:

  • 范围匹配(> 、 = 、between)
  • 模糊匹配(like)
  • 空判定(null)
  • 包含性匹配(in)
  • 分组(group)
  • 排序(order)
  • ……

等值查询

  • 根据用户名和密码查询用户信息

        LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<Person>();
        lqw.eq(Person::getName, "李四").eq(Person::getPassword, "3256");
        Person loginPerson = personDao.selectOne(lqw);
        System.out.println(loginPerson);

范围查询

对年龄进行范围查询,使用lt()、le()、gt()、ge()、between()进行范围查询

        LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<Person>();
        lqw.between(Person::getAge,13,17);
        List<Person> personList = personDao.selectList(lqw);
        System.out.println(personList);

模糊查询

查询表中name属性的值以T开头的用户信息,使用like进行模糊查询

        LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<Person>();
        lqw.likeRight(Person::getName,"T");
        List<Person> personList = personDao.selectList(lqw);
        System.out.println(personList);

排序查询

查询所有数据,然后按照id降序

        LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<>();
        lqw.orderBy(true,false, Person::getId);
        List<Person> personList = personDao.selectList(lqw);
        System.out.println(personList);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java基础中异常及包归纳整理

    java基础中异常及包归纳整理

    这篇文章主要介绍了java基础中的 异常与包,有需要的朋友可以参考一下
    2017-04-04
  • 浅谈JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并

    浅谈JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并

    这篇文章主要介绍了JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Spring Boot 4.0 新特性实战全解析

    Spring Boot 4.0 新特性实战全解析

    SpringBoot4.0带来了多项重大升级,包括GraalVM原生镜像支持、自动配置优化、Web层升级(HTTP/3和MVC响应式支持)以及Testcontainers集成简化,本文详细介绍了每个特性的实操步骤,并提供迁移避坑指南,帮助开发者顺利升级到SpringBoot4.0,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • Java实现生成n个不重复的随机数

    Java实现生成n个不重复的随机数

    这篇文章主要为大家详细介绍了Java实现生成n个不重复的随机数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 基于Java实现无向环和有向环的检测

    基于Java实现无向环和有向环的检测

    这篇文章主要介绍了如何在 Java 中实现无向环和有向环的检测,文中的示例代码讲解详细,对我们学习Java有一定的帮助,需要的可以参考一下
    2022-04-04
  • Java实现FTP批量大文件上传下载篇1

    Java实现FTP批量大文件上传下载篇1

    这篇文章主要为大家详细介绍了Java实现FTP批量大文件上传下载的基础篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Java读取properties文件连接数据库的方法示例

    Java读取properties文件连接数据库的方法示例

    这篇文章主要介绍了Java读取properties文件连接数据库的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • Java IO流学习总结之文件传输基础

    Java IO流学习总结之文件传输基础

    这篇文章主要介绍了Java IO流学习总结之文件传输基础,文中有非常详细的代码示例,对正在学习java io流的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • 详解Spring获取配置的三种方式

    详解Spring获取配置的三种方式

    这篇文章主要为大家详细介绍了Spring获取配置的三种方式:@Value方式动态获取单个配置、@ConfigurationProperties+前缀方式批量获取配置以及Environment动态获取单个配置,感兴趣的可以了解一下
    2022-03-03
  • Java集合类的组织结构和继承、实现关系详解

    Java集合类的组织结构和继承、实现关系详解

    这篇文章主要介绍了Java集合类的组织结构和继承、实现关系,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11

最新评论