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

Posted 攻城狮Chova

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Screw工具基本使用:一键生成Java实体类和数据库文档相关的知识,希望对你有一定的参考价值。

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实体类和数据库文档的主要内容,如果未能解决你的问题,请参考以下文章

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

JAVA 数据库表结构设计文档生成工具(screw )

JAVA 数据库表结构设计文档生成工具(screw )

Github上一款一键生成数据库文档的大利器!

JAVA自动创建实体类工具?

还在手写数据库设计文档?java一键生成