0
点赞
收藏
分享

微信扫一扫

Screw工具基本使用:一键生成Java实体类和数据库文档

滚过红尘说红尘 2022-03-12 阅读 26



Screw工具基本使用


  • ​​Screw基本介绍​​
  • ​​Screw文档生成方式​​

  • ​​Java方式​​
  • ​​Maven插件​​

  • ​​Screw生成Java POJO对象​​


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();
}
}



举报

相关推荐

0 条评论