Screw基本介绍
- Screw是一个非常简洁好用的数据库表结构文档生成工具,支持MySQL,Oracle,PostgreSQL等主流的关系数据库
- Screw数据库表结构文档生成工具支持生成以下三种格式的文档:
Screw文档生成方式
- Screw数据库表结构文档生成工具支持通过Java代码和Maven插件的方式生成数据库表结构文档
Java方式
- 在pom.xml文件中,引入screw-core依赖.同时引入HikariCP依赖和mysql-connector-java依赖来连接MySQL数据库:
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
public class DocumentGeneration {
public static void main(String[] args) {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");
hikariConfig.setUsername("root");
hikariConfig.setPassword("root");
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaxmumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
EngineConfig engineConfig = EngineConfig.builder()
.fileOutputDir(fileOutputDir)
.openOutputDir(true)
.fileType(EngineFileType.HTML)
.produceType(EngineTemplateType.freemarker)
.fileName("DataBaseDocument")
.build();
ArrayList<String> ignoreTableName = new ArrayList<>();
ignoreTableName.add("test_user");
ignoreTableName.add("test_group");
ArrayList<String> ignoreTablePrefix = new ArrayList<>();
ignoreTablePrefix.add("test_");
ArrayList<String> ignoreTableSuffix = new ArrayList<>();
ignoreTableSuffix.add("_test");
ProcessConfig processConfig = ProcessConfig.build()
.designatedTableName(new ArrayList<>())
.designatedTablePrefix(new ArrayList<>())
.designatedTableSuffix(new ArrayList<>())
.ignoreTableName(ignoreTableName)
.ignoreTablePrefix(ignoreTablePrefix)
.ignoreTableSuffix(ignoreTableSuffix)
.build();
Configuration config = Configuration.builder()
.version("1.0.0")
.description("数据库表结构文档生成")
.dataSource(dataSource)
.engineConfig(engineConfig)
.produceConfig(processConfig)
.build();
new DocumentationExecute(config).execute();
}
}
Maven插件
- 在pom.xml文件中,引入Screw的Maven插件screw-maven-plugin插件:
<plugin>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-maven-plugin</artifactId>
<version>1.0.5</version>
<dependencies>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
<configuration>
<username>root</username>
<password>root</password>
<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
<jdbcUrl>jdbc:mysql://127.0.0.1:3306/database</jdbcUrl>
<fileType>HTML</fileType>
<openOutputDir>false</openOutputDir>
<produceType>freemarker</produceType>
<fileName>DataBaseDocument</fileName>
<description>数据库表结构文档生成</description>
<version>1.0.0</version>
<title>数据库表结构文档</title>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Screw生成Java POJO对象
- Screw支持通过MySQL数据库生成对应的Java POJO对象
- 在pom.xml文件中,引入screw-extension依赖.同时引入HikariCP依赖和mysql-connector-java依赖来连接MySQL数据库:
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-extension</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-extension</artifactId>
<version>1.0.5</version>
</dependency>
- Java POJO对象生成类PojoGeneration类:
public class PojoGeneration {
public static void main(String[] args) {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");
hikariConfig.setUserName("root");
hikariConfig.setPassword("root");
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HakariDataSource(hikariConfig);
ProcessConfig processConfig = ProcessConfig.builder()
.designatedTableName(new ArrayList<>())
.designatedTablePrefix(new ArrayList<>())
.designatedTableSuffix(new ArrayList<>())
.build();
PojoConfiguration config = new PojoConfiguration();
config.setPath("com/oxford/pojo");
config.setPackageName("com.oxford.pojo");
config.setUseLombok(false);
config.setDataSource(dataSource);
config.setNameStrategy(new HumpNameStrategy());
config.setProcessConfig(processConfig);
new PojoExecute(config).execute();
}
}