Screw工具基本使用:一键生成Java实体类和数据库文档
Posted 攻城狮Chova
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Screw工具基本使用:一键生成Java实体类和数据库文档相关的知识,希望对你有一定的参考价值。
Screw工具基本使用
Screw基本介绍
- Screw是一个非常简洁好用的数据库表结构文档生成工具,支持MySQL,Oracle,PostgreSQL等主流的关系数据库
- Screw数据库表结构文档生成工具支持生成以下三种格式的文档:
- HTML
- Word
- Markdown
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>
- 文档生成类DocumentGeneration类
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>
<!-- HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
<!--mysql driver-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
<configuration>
<!--username-->
<username>root</username>
<!--password-->
<password>root</password>
<!--driver-->
<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
<!--jdbc url-->
<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>
- 执行Maven插件即可生成数据库表结构文档
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()
/*
* 指定生成逻辑:
* - 如果存在指定表名称,指定表前缀,指定表后缀时.会生成指定表的Java POJO对象,其余表不会生成,并且跳过忽略表配置
* - 如果未指定,会忽略表配置的其余所有的表
*/
// 生成指定名称的表
.designatedTableName(new ArrayList<>())
// 生成指定前缀的表
.designatedTablePrefix(new ArrayList<>())
// 生成指定后缀的表
.designatedTableSuffix(new ArrayList<>())
.build();
// 配置生成的Java POJO对象
PojoConfiguration config = new PojoConfiguration();
// 配置生成的路径
config.setPath("com/oxford/pojo");
// 配置包的名称
config.setPackageName("com.oxford.pojo");
// 配置是否使用lombok
config.setUseLombok(false);
// 配置数据源
config.setDataSource(dataSource);
// 配置命名策略
config.setNameStrategy(new HumpNameStrategy());
// 配置执行的配置
config.setProcessConfig(processConfig);
// 执行
new PojoExecute(config).execute();
以上是关于Screw工具基本使用:一键生成Java实体类和数据库文档的主要内容,如果未能解决你的问题,请参考以下文章