原文连接:java快速生成数据库文档_小码农叔叔的博客-CSDN博客_java生成数据库文档
以实际数据库为例:
在pom中添加依赖
<!-- screw核心 -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.3</version>
</dependency>
<!-- HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<!--mysql driver-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
数据库工具类
public class JdbcUtils {
public static String DRIVER_NAME = "com.mysql.jdbc.Driver";
public static String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/mydata";
public static String USER_NAME = "root";
public static String PASSWORD = "root";
public static DataSource getDataSourceFonfig() {
//数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(DRIVER_NAME);
hikariConfig.setJdbcUrl(JDBC_URL);
hikariConfig.setUsername(USER_NAME);
hikariConfig.setPassword(PASSWORD);
//设置可以获取tables remarks信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
return new HikariDataSource(hikariConfig);
}
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(DRIVER_NAME).newInstance();
conn = java.sql.DriverManager.getConnection(JDBC_URL, USER_NAME, PASSWORD);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取某个数据库下的所有表
*
* @return
*/
public static List<String> getTablesNames() {
List<String> tables = new ArrayList<>();
Connection connection = getConnection();
ResultSet rs = null;
Statement st = null;
try {
st = connection.createStatement();
rs = st.executeQuery("show tables");
while (rs.next()) {
String string = rs.getString(1);
tables.add(string);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
st.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return tables;
}
}
测试类
@SpringBootTest
class FireflyApplicationTests {
/**
* 生成的文档本地路径
*/
public static final String LOCAL_PATH = "D:\\mydata";
@Test
void contextLoads() {
DataSource dataSource = JdbcUtils.getDataSourceFonfig();
EngineConfig engineConfig = EngineConfig.builder()
//导出文件地址
.fileOutputDir(LOCAL_PATH)
//是否打开文件夹
.openOutputDir(true)
//文件类型:html、doc、mockdown
.fileType(EngineFileType.WORD)
//模板引擎
.produceType(EngineTemplateType.freemarker).build();
ProcessConfig processConfig = ProcessConfig.builder()
//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
//根据名称指定表生成
.designatedTableName(JdbcUtils.getTablesNames())
//根据表前缀生成
.designatedTablePrefix(new ArrayList<>())
//根据表后缀生成
.designatedTableSuffix(new ArrayList<>()).build();
//设置生成pojo相关配置
Configuration config = Configuration.builder()
.version("1.0.0")
.description("数据库设计文档")
.dataSource(dataSource)
.engineConfig(engineConfig)
.produceConfig(processConfig).build();
new DocumentationExecute(config).execute();
}
}