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);

总结

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

相关文章

  • SpringBoot文件访问映射如何实现

    SpringBoot文件访问映射如何实现

    这篇文章主要介绍了SpringBoot文件访问映射如何实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java算法练习题,每天进步一点点(1)

    Java算法练习题,每天进步一点点(1)

    方法下面小编就为大家带来一篇Java算法的一道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • springboot yml配置文件定义list集合、数组和map以及使用中的错误

    springboot yml配置文件定义list集合、数组和map以及使用中的错误

    这篇文章主要介绍了springboot yml配置文件定义list集合、数组和map以及使用中遇到的错误问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 怎样提高mybatis-plus中saveBatch方法的效率

    怎样提高mybatis-plus中saveBatch方法的效率

    这篇文章主要介绍了怎样提高mybatis-plus中saveBatch方法的效率问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java9新特性Module模块化编程示例演绎

    Java9新特性Module模块化编程示例演绎

    这篇文章主要为大家介绍了Java9新特性Module模块化编程的示例演绎,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-03-03
  • java同步器AQS架构AbstractQueuedSynchronizer原理解析

    java同步器AQS架构AbstractQueuedSynchronizer原理解析

    这篇文章主要为大家介绍了java同步器AQS架构AbstractQueuedSynchronizer的底层原理及源码解析,有需要的朋友可以借鉴参考下,希望能有所帮助,祝大家多多进步早日升职加薪
    2022-03-03
  • SSM项目中配置LOG4J日志的方法

    SSM项目中配置LOG4J日志的方法

    本篇文章主要介绍了SSM项目中配置LOG4J日志的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • SpringBoot 并发登录人数控制的实现方法

    SpringBoot 并发登录人数控制的实现方法

    这篇文章主要介绍了SpringBoot 并发登录人数控制的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Java中的注解机制Annotation详解

    Java中的注解机制Annotation详解

    这篇文章主要介绍了Java中的注解机制Annotation详解,  Java Annotation 是 Java 语言中的一种 元数据机制,它可以在代码中添加额外的信息,以便于程序的理解和处理,Annotation 可以用来描述类、方法、属性等各种程序的特性,需要的朋友可以参考下
    2023-10-10
  • 使用RequestBodyAdvice实现对Http请求非法字符过滤

    使用RequestBodyAdvice实现对Http请求非法字符过滤

    这篇文章主要介绍了使用RequestBodyAdvice实现对Http请求非法字符过滤的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论