MyBatisPlus-聚合查询、分组查询及等值查询

简介: MyBatisPlus-聚合查询、分组查询及等值查询

一、聚合查询

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


count:总记录数

max:最大值

min:最小值

avg:平均值

sum:求和


@SpringBootTest 
class Mybatisplus02DqlApplicationTests { 
    @Autowired 
    private UserDao userDao; 
    @Test 
    void testGetAll(){ 
        QueryWrapper<User> lqw = new QueryWrapper<User>(); 
        //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>> userList = userDao.selectMaps(lqw); 
        System.out.println(userList); 
    } 
}

二、分组查询

需求:分组查询,完成group by的查询使用

@SpringBootTest 
class Mybatisplus02DqlApplicationTests { 
    @Autowired 
    private UserDao userDao; 
    @Test 
    void testGetAll(){ 
        QueryWrapper<User> lqw = new QueryWrapper<User>(); 
        lqw.select("count(*) as count,tel"); 
        lqw.groupBy("tel"); 
        List<Map<String, Object>> list = userDao.selectMaps(lqw); 
        System.out.println(list); 
    }
}

groupBy分组,最终的sql语句为:

SELECT count(*) as count,tel FROM user GROUP BY tel

注意:


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


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

三、等值查询

需求:根据用户名和密码查询用户信息

@SpringBootTest 
class Mybatisplus02DqlApplicationTests { 
    @Autowired 
    private UserDao userDao; 
    @Test 
    void testGetAll(){ 
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>(); 
        lqw.eq(User::getName, "Jerry").eq(User::getPassword, "jerry"); 
        User loginUser = userDao.selectOne(lqw); 
        System.out.println(loginUser); 
    } 
}

eq():相当于 = ,对应的sql语句为

SELECT id,name,password,age,tel FROM user WHERE (name = ? AND password = ?)


selectList:查询结果为多个或者单个


selectOne:查询结果为单个

目录
相关文章
|
16天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
20 0
|
1月前
|
Java 关系型数据库 数据库连接
MyBatis Plus 解决大数据量查询慢问题
MyBatis Plus 解决大数据量查询慢问题
|
4月前
|
SQL 数据库
MyBatisPlus-null判定及查询指定字段
MyBatisPlus-null判定及查询指定字段
245 0
|
1月前
|
SQL Java 数据库连接
Mybatis查询的时候BigDecimal类型的值查询失效的解决办法
Mybatis查询的时候BigDecimal类型的值查询失效的解决办法
|
1月前
|
缓存 Java 数据库连接
MyBatis Plus的“幻查” 规范到底要怎样使用哪几个查询函数 为什么会出现幻查?还有幻删为什么会删不掉
MyBatis Plus的“幻查” 规范到底要怎样使用哪几个查询函数 为什么会出现幻查?还有幻删为什么会删不掉
|
1月前
|
SQL Java 关系型数据库
【MyBatis】3、一文介绍如何用 MyBatis 进行多表级联查询
【MyBatis】3、一文介绍如何用 MyBatis 进行多表级联查询
54 0
|
3月前
|
SQL Java 数据库连接
JAVAEE框架技术之9-myBatis高级查询技术文档
JAVAEE框架技术之9-myBatis高级查询技术文档
81 0
JAVAEE框架技术之9-myBatis高级查询技术文档
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis的各种查询功能和特殊SQL的执行
【1月更文挑战第3天】 一、MyBatis的各种查询功能 1、查询一个实体类对象 2、查询一个List集合 3、查询单个数据 4、查询一条数据为map集合 5、查询多条数据为map集合 1、方法一 2、方法二 二、特殊SQL的执行 1、模糊查询 2、批量删除 3、动态设置表名 4、添加功能获取自增的主键
140 1
Mybatis之Mybatis的各种查询功能和特殊SQL的执行