mybatis-plus 导出excel
时间: 2024-06-29 08:01:08 浏览: 210
MyBatis-Plus 是基于 MyBatis 的一个优秀的开源 ORM(Object-Relational Mapping)工具,它简化了数据持久层的操作,提供了大量的便利方法。导出 Excel 功能在 MyBatis-Plus 中可以通过 DataMap 和 ExportExcel 组件来实现。
1. **DataMap**:DataMap 是 MyBatis-Plus 提供的一种将数据库查询结果映射到 Java 对象的方式。首先,你需要定义一个实体类(Entity),然后在 Service 或 Mapper 中使用 `BaseMapper.selectMaps()` 方法获取查询结果作为 DataMap。
```java
List<Map<String, Object>> dataList = baseMapper.selectMaps(where条件);
```
2. **ExportExcel**:MyBatis-Plus 的 ExportExcel 工具可以将 DataMap 转换成 Excel 表格,支持导出多个数据源和自定义样式。使用时,需要引入相应的依赖,并创建一个 Excel 出口类:
```java
import com.baomidou.mybatisplus.core.toolkit_excel.ExcelUtil;
import com.baomidou.mybatisplus.core.toolkit_excel.utils.CellStyleUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
// ...
public void exportExcel(Page<Map<String, Object>> page) {
ExcelUtil.writeExcel(responseOutputStream, "出口名称", dataList, true, CellStyleUtils.getCellStyle("标题样式"));
}
```
3. **导出操作**:通常在 Controller 层处理前端请求,将分页数据传递给 Service 层,然后调用 ExportExcel 方法生成 Excel 文件并返回给用户。
```java
@GetMapping("/export")
public ResponseEntity<byte[]> exportExcel(@RequestParam Map<String, Object> params) {
Page<Map<String, Object>> page = productService.getPage(params);
try (OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
exportExcel(page).write(outputStream);
return ResponseEntity.ok().header("Content-Disposition", "attachment; filename=export.xlsx");
} catch (Exception e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}
```
阅读全文