SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel
时间: 2024-02-01 07:02:40 浏览: 315
SpringBoot实现Excel文件批量上传导入数据库
好的,这里是SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel的方法。
1. 添加依赖
在 pom.xml 文件中添加以下依赖:
```xml
<!-- easyExcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
```
2. 创建实体类
创建一个实体类,用于映射 Excel 表格中的数据。
```java
@Data
public class User {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
@ExcelProperty("性别")
private String gender;
}
```
3. 创建Excel读取器
创建一个 Excel 读取器,用于读取 Excel 表格中的数据,并将数据存储到数据库中。
```java
@Component
public class ExcelReader {
@Autowired
private UserService userService;
/**
* 读取 Excel 表格中的数据,并将数据存储到数据库中
*/
public void readExcel(String fileName) {
EasyExcel.read(fileName, User.class, new UserExcelListener()).sheet().doRead();
}
/**
* 用户Excel监听器
*/
private class UserExcelListener extends AnalysisEventListener<User> {
/**
* 每读取一行数据,就会调用该方法
*/
@Override
public void invoke(User user, AnalysisContext context) {
userService.save(user);
}
/**
* 读取完整个 Excel 表格后,会调用该方法
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// do nothing
}
}
}
```
4. 创建Excel导出器
创建一个 Excel 导出器,用于从数据库中获取数据,并将数据导出到 Excel 表格中。
```java
@Component
public class ExcelWriter {
@Autowired
private UserService userService;
/**
* 将用户数据导出到 Excel 表格中
*/
public void writeExcel(String fileName) {
List<User> userList = userService.list();
EasyExcel.write(fileName, User.class).sheet().doWrite(userList);
}
}
```
5. 创建Controller
创建一个 Controller,用于接收前端请求,并调用相应的方法处理请求。
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private ExcelReader excelReader;
@Autowired
private ExcelWriter excelWriter;
/**
* 批量导入用户数据
*/
@PostMapping("/import")
public void importExcel(@RequestParam("file") MultipartFile file) throws IOException {
excelReader.readExcel(file.getInputStream());
}
/**
* 导出用户数据到Excel
*/
@GetMapping("/export")
public void exportExcel(HttpServletResponse response) throws IOException {
String fileName = "用户信息.xlsx";
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
response.setContentType("application/vnd.ms-excel");
excelWriter.writeExcel(response.getOutputStream());
}
}
```
6. 配置文件
在 application.yml 文件中添加数据库连接信息。
```yaml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.example.demo.domain
```
7. 测试
启动应用程序,并在浏览器中访问以下地址:
- http://localhost:8080/user/export :导出 Excel 表格
- http://localhost:8080/user/import :导入 Excel 表格
以上就是 SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel 的方法了,希望能帮到你。
阅读全文