Spring Boot MySQL导入导出Excel 教程

引言

在现代的软件开发中,数据的导入和导出是一项常见的任务。在使用Spring Boot和MySQL的开发中,我们经常需要将数据从数据库导出并保存为Excel文件,或者将Excel文件导入到数据库中。本教程将向你展示如何使用Spring Boot和MySQL实现这个功能。

整体流程

下面是整个流程的概览,我们将在后面的章节中逐步详细说明每个步骤。

stateDiagram
    [*] --> 导出Excel
    导出Excel --> 导入数据
    导入数据 --> [*]

步骤一:导出Excel

首先,我们需要从MySQL数据库中获取数据,并将其导出为Excel文件。

1.1 创建实体类

创建一个Java类来表示从数据库中检索到的数据。假设我们有一个名为User的实体类,其中包含用户的ID、姓名和年龄字段。

public class User {
    private Long id;
    private String name;
    private int age;

    // 省略构造方法、getter和setter
}

1.2 创建数据访问层

接下来,我们需要创建一个数据访问层(DAO)来从数据库中检索用户数据。使用Spring Data JPA可以方便地访问数据库。

public interface UserRepository extends JpaRepository<User, Long> {
    // 省略其他方法
}

1.3 创建业务逻辑层

然后,我们需要创建一个业务逻辑层(Service)来协调数据访问层和控制层。在这个业务逻辑层中,我们将调用数据访问层的方法来获取用户数据。

@Service
public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}

1.4 创建控制层

接下来,我们需要创建一个控制层(Controller)来处理HTTP请求,并调用业务逻辑层的方法来获取用户数据。

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/export")
    public void exportUsersToExcel(HttpServletResponse response) throws IOException {
        List<User> users = userService.getAllUsers();

        // 创建Excel工作簿
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Users");

        // 创建表头
        Row headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("ID");
        headerRow.createCell(1).setCellValue("Name");
        headerRow.createCell(2).setCellValue("Age");

        // 填充数据
        int rowNum = 1;
        for (User user : users) {
            Row row = sheet.createRow(rowNum++);
            row.createCell(0).setCellValue(user.getId());
            row.createCell(1).setCellValue(user.getName());
            row.createCell(2).setCellValue(user.getAge());
        }

        // 将Excel写入响应流
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment; filename=users.xlsx");
        workbook.write(response.getOutputStream());
        workbook.close();
    }
}

1.5 配置导出Excel的URL

最后,我们需要在Spring Boot应用程序的配置文件中指定导出Excel的URL。

spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5Dialect

multipart:
  enabled: true

步骤二:导入数据

现在我们已经学会了如何将数据导出到Excel文件,接下来我们将学习如何将Excel文件中的数据导入到数据库中。

2.1 创建上传文件的页面

首先,我们需要创建一个页面来上传Excel文件。可以使用HTML和Thymeleaf模板引擎来创建这个页面。

<!DOCTYPE html>
<html xmlns:th="
<head>
    <meta charset="UTF-8">
    <title>Upload Excel</title>
</head>
<body>
    <h1