导出数据库表信息到excel
当涉及到数据导出以及 Excel 文件处理时,经常会涉及到对数据进行整理、处理,并将其导出到 Excel 文件中。
在 Java 开发中,使用 Apache POI 库可以方便地处理 Excel 文件的读写操作。
今天我将向大家介绍如何通过 Java 代码实现从数据库表中提取数据,整理输出到 Excel 文件的过程。我们将使用 Spring 框架和 Apache POI 库来实现这个过程。
步骤一:
首先,我们需要创建一个实体类 TableSch
,用于映射数据库表结构信息。
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class TableSch implements Serializable{
@ApiModelProperty(value = "源表名")
@TableField("TABLE_NAME")
private String tableName;
@ApiModelProperty(value = "源表中文名")
@TableField("TABLE_COMMENT")
private String tableComment;
@ApiModelProperty(value = "字段序号")
@TableField("ORDINAL_POSITION")
private Integer ordinalPosition;
@ApiModelProperty(value = "字段中文名称")
@TableField("COLUMN_COMMENT")
private String columnComment;
@ApiModelProperty(value = "字段英文名称")
@TableField("COLUMN_NAME")
private String columnName;
@ApiModelProperty(value = "字段类型")
@TableField("COLUMN_TYPE")
private String columnType;
@ApiModelProperty(value = "是否允许为空")
@TableField("IS_NULLABLE")
private String isNullable;
@ApiModelProperty(value = "是否主键")
@TableField("COLUMN_KEY")
private String columnKey;
}
步骤二:
然后,再编写一个数据访问层接口 TableSchMapper
,用于数据库操作。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.myspace.entity.TableSch;
import java.util.List;
public interface TableSchMapper extends BaseMapper<TableSch> {
List<TableSch> findTableSch();
}
步骤三:
在mapper.xml中编写sql:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.myspace.mapper.TableSchMapper">
<select id="findTableSch" resultType="com.myspace.entity.TableSch">
SELECT
t1.table_name,
t2.table_comment,
t1.ordinal_position,
t1.column_comment,
t1.column_name,
t1.column_type,
IF
( t1.IS_NULLABLE = 'NO', 'N', 'Y' ) IS_NULLABLE,
IF
( t1.COLUMN_KEY = 'PRI', 'Y', 'N' ) COLUMN_KEY
FROM
(
SELECT
*
FROM
information_schema.COLUMNS
WHERE
table_schema = '数据库实例名'
and table_name in ('sys_user', 'sys_role', 'sys_region')
) t1
INNER JOIN ( SELECT * FROM information_schema.TABLES WHERE table_schema = '数据库实例名' AND table_type = 'BASE TABLE' ) t2
ON t1.table_name = t2.table_name
</select>
</mapper>
步骤四:
接着,编写一个测试类 ExcelRW
。
方式一: 使用 Apache POI 库的方式。
引入需要的依赖包。
<properties>
<poi.version>3.17</poi.version>
<poi.ooxml.version>3.17</poi.ooxml.version>
<poi.schemas.version>3.17</poi.schemas.version>
</properties>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${
poi.ooxml.version}