使用 MyBatis-Plus 实现 Lambda 分组统计
在数据分析和处理的工作中,分组统计是一项非常重要的功能。在 Java 开发中,MyBatis-Plus 可以很方便地实现这一功能。接下来,我会带领你学习如何使用 MyBatis-Plus 进行 Lambda 分组统计。
工作流程
为了帮助你更好地理解整个过程,下面是一个简单的工作流程表格:
步骤 | 说明 |
---|---|
1 | 创建数据库表 |
2 | 配置 MyBatis-Plus |
3 | 创建实体类 |
4 | 创建 Mapper 接口 |
5 | 编写 Lambda 分组统计的 Service 方法 |
6 | 测试并运行 |
Step 1: 创建数据库表
首先,你需要创建一个数据库表。假设我们有一个销售表,记录每个销售人员的销售金额。这个表可以用以下 SQL 语句创建:
CREATE TABLE sales (
id INT PRIMARY KEY AUTO_INCREMENT,
seller_name VARCHAR(255),
sale_amount DECIMAL(10, 2),
sale_date DATE
);
Step 2: 配置 MyBatis-Plus
在你的 Maven 项目中,添加 MyBatis-Plus 依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version> <!-- 指定版本 -->
</dependency>
确保你已经在 application.yml
或 application.properties
中配置了数据库的连接信息。
Step 3: 创建实体类
创建一个实体类 Sale
,与表结构相对应:
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("sales")
public class Sale {
private Long id; // 销售 ID
private String sellerName; // 销售员名字
private BigDecimal saleAmount; // 销售金额
private Date saleDate; // 销售日期
}
Step 4: 创建 Mapper 接口
创建 SaleMapper
接口,继承 MyBatis-Plus 的 BaseMapper
:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SaleMapper extends BaseMapper<Sale> {
// 无需额外方法,继承 BaseMapper 已经提供基础操作
}
Step 5: 编写 Lambda 分组统计的方法
在你的 Service 类中,编写一个统计销售额的方法,按照销售员分组:
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
@Service
public class SaleService extends ServiceImpl<SaleMapper, Sale> {
public List<SaleStatisticDTO> getSalesStatistics() {
// 创建 LambdaQueryWrapper 对象
LambdaQueryWrapper<Sale> queryWrapper = new LambdaQueryWrapper<>();
// 使用 MyBatis-Plus 的函数进行分组和统计
return this.baseMapper.selectList(queryWrapper
.select("seller_name, SUM(sale_amount) AS total_amount")
.groupBy("seller_name")
);
}
}
这段代码定义了一个方法
getSalesStatistics()
,它通过LambdaQueryWrapper
构建 SQL 查询,以销售员名字分组并计算销售总额。
Step 6: 测试并运行
在测试类中调用上面的方法,并输出结果:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class ApplicationRunner implements CommandLineRunner {
@Autowired
private SaleService saleService;
@Override
public void run(String... args) throws Exception {
List<SaleStatisticDTO> stats = saleService.getSalesStatistics();
stats.forEach(stat -> {
System.out.println(stat.getSellerName() + ": " + stat.getTotalAmount());
});
}
}
旅行图
在整个过程中,你的开发旅程如下所示:
journey
title MyBatis-Plus Lambda 分组统计之旅
section 创建数据库表
创建销售表: 5: Seller
section 配置 MyBatis-Plus
添加 Maven 依赖: 3: Developer
section 创建实体类
编写 Sale 类: 4: Developer
section 创建 Mapper 接口
编写 SaleMapper: 4: Developer
section 编写 Service 方法
实现分组统计: 5: Developer
section 测试并运行
验证输出结果: 5: Developer
结尾
至此,你已经了解了如何在 Java 项目中使用 MyBatis-Plus 进行 Lambda 分组统计。通过这个过程,你学会了如何创建数据库、配置 MyBatis-Plus、编写实体类、Mapper 接口以及统计功能的方法。希望这些知识能帮助你在今后的开发工作中更加游刃有余!如果你有任何问题,欢迎随时问我。