Spring Boot 条件查询QueryWrapper、聚合函数的使用、Lambda条件查询

冬天的秘密 2024-06-24 ⋅ 22 阅读

一、QueryWrapper 条件查询

在使用Spring Boot开发应用时,经常需要根据条件查询数据库中的数据。QueryWrapper是MyBatis-Plus中强大的查询条件封装类,可以通过它灵活地构建查询条件。

使用QueryWrapper进行条件查询的步骤如下:

1. 在pom.xml中添加MyBatis-Plus的依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

2. 创建Mapper接口

@Mapper
public interface UserMapper extends BaseMapper<User> {
    
}

3. 构建QueryWrapper对象,设置查询条件

可以使用QueryWrapper的各种方法来设置查询条件,如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 20); // 年龄等于20
queryWrapper.between("create_time", "2021-01-01 00:00:00", "2021-12-31 23:59:59"); // 创建时间在指定范围内
queryWrapper.like("username", "admin"); // 用户名中含有"admin"

4. 调用Mapper接口的selectList方法执行查询

List<User> userList = userMapper.selectList(queryWrapper);

二、聚合函数的使用

在进行数据库查询时,有时需要统计某些字段的最大值、最小值、总和等聚合操作。MyBatis-Plus提供了实用的聚合函数:

1. count方法:统计记录数

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 20);
Integer count = userMapper.selectCount(queryWrapper);

2. max方法:求最大值

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18);
Integer maxAge = userMapper.selectObjs(queryWrapper).stream().mapToInt(i -> (Integer) i).max().orElse(0);

3. min方法:求最小值

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", 1);
Integer minStatus = userMapper.selectObjs(queryWrapper).stream().mapToInt(i -> (Integer) i).min().orElse(0);

4. sum方法:求和

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("gender", "male");
Integer sum = userMapper.selectObjs(queryWrapper).stream().mapToInt(i -> (Integer) i).sum();

三、Lambda条件查询

除了使用QueryWrapper,MyBatis-Plus还提供了Lambda条件查询的方式,代码更为简洁。

1. 创建LambdaQueryWrapper对象

使用LambdaQueryWrapper可以直接通过实体类的属性名来设置查询条件,如:

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getAge, 20); // 年龄等于20
lambdaQueryWrapper.between(User::getCreateTime, "2021-01-01 00:00:00", "2021-12-31 23:59:59"); // 创建时间在指定范围内
lambdaQueryWrapper.like(User::getUsername, "admin"); // 用户名中含有"admin"

2. 调用Mapper接口的selectList方法执行查询

List<User> userList = userMapper.selectList(lambdaQueryWrapper);

Lambda条件查询可以极大地简化代码量,提高开发效率。

以上就是关于Spring Boot 条件查询QueryWrapper、聚合函数的使用、Lambda条件查询的介绍,希望能对你有所帮助!


全部评论: 0

    我有话说: