栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

实现Java自动生成数据库表结构

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实现Java自动生成数据库表结构

今天偶然间看见一篇文章,使用Java自动生成数据库表结构设计文档,真的省事!!!
原文地址:https://blog.csdn.net/weixin_44385486/article/details/121319806
我的配置:

idea 2019
jdk1.8
MySQL

1、引入 pom.xml核心配置screw包

找到自己的pom.xml配置文件,复制

     
    
      mysql
      mysql-connector-java
      8.0.16
    

    
      junit
      junit
      4.11
      test
    
    
    
    
      cn.smallbun.screw
      screw-core
      1.0.5
    

    
      org.freemarker
      freemarker
      2.3.30
    

    
    
      com.zaxxer
      HikariCP
      3.4.5
    
  
2、创建一个测试类

只需要改表名、数据库密码和文件输出地址即可

public class Test {
    
    private static final String MYSQL_URL = "jdbc:mysql://localhost:3306";
    
    private static final String MYSQL_NAME = "bank?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
    
    private static final String MYSQL_USERNAME = "root";
    
    private static final String MYSQL_PASSWORD = "root";
    
    private static final String FILE_OUTPUT_DIR = "E:\";

    
    private static final EngineFileType FILE_OUTPUT_TYPE = EngineFileType.WORD;
    private static final String DOC_FILE_NAME = "java实现数据库表设计文档";
    private static final String DOC_VERSION = "V1.0.0";
    private static final String DOC_DEscriptION = "数据库表设计描述";

    public static void main(String[] args) {
        // 创建 screw 的配置
        Configuration config = Configuration.builder()
                // 版本
                .version(DOC_VERSION)
                // 描述
                .description(DOC_DEscriptION)
                // 数据源
                .dataSource( buildDataSource())
                // 引擎配置
                .engineConfig(buildEngineConfig())
                // 处理配置
                .produceConfig(buildProcessConfig())
                .build();

        // 执行 screw,生成数据库文档
        new documentationExecute(config).execute();
    }

    
    private static HikariDataSource buildDataSource() {
        // 创建 HikariConfig 配置类
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
        hikariConfig.setJdbcUrl(MYSQL_URL + "/" + MYSQL_NAME);
        hikariConfig.setUsername(MYSQL_USERNAME);
        hikariConfig.setPassword(MYSQL_PASSWORD);
        // 设置可以获取 tables remarks 信息
        hikariConfig.addDataSourceProperty("useInformationSchema", "true");
        hikariConfig.setMinimumIdle(2);
        hikariConfig.setMaximumPoolSize(5);
        // 创建数据源
        HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
        return  hikariDataSource;
    }

    
    private static EngineConfig buildEngineConfig() {
        return EngineConfig.builder()
                // 生成文件路径
                .fileOutputDir(FILE_OUTPUT_DIR)
                // 打开目录
                .openOutputDir(false)
                // 文件类型
                .fileType(FILE_OUTPUT_TYPE)
                // 文件类型
                .produceType(EngineTemplateType.freemarker)
                // 自定义文件名称
                .fileName(DOC_FILE_NAME)
                .build();
    }

    
    private static ProcessConfig buildProcessConfig() {
        return ProcessConfig.builder()
                // 根据名称指定表生成
                .designatedTableName(Collections.emptyList())
                // 根据表前缀生成
                .designatedTablePrefix(Collections.emptyList())
                // 根据表后缀生成
                .designatedTableSuffix(Collections.emptyList())
                // 忽略数据库中address这个表名
                .ignoreTableName(Arrays.asList("address"))
                // 忽略表前缀,就是db1数据库中表名是t_开头的都不生产数据库文档(t_student,t_user这两张表)
                .ignoreTablePrefix(Collections.singletonList("t_"))
                // 忽略表后缀(就是db1数据库中表名是_teacher结尾的都不生产数据库文档:stu_teacher)
                .ignoreTableSuffix(Collections.singletonList("_teacher"))
                .build();
    }

效果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681078.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号