java代码实现自动生成数据库表er图

这篇具有很好参考价值的文章主要介绍了java代码实现自动生成数据库表er图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近有同事看到字节跳动产品设计文档里有数据库表er图。就想问问又没有现成的工具也给直接生成一个er图,经查找验证发现并没有。因为现在表关系都是用的逻辑外键而非物理外键约束的,所以像navicat等工具就算生成了也没有描述关系的连接线。那么为了满足需求,这边就略微出手写了个代码实现er关系的工具。(注意:这里只有后端部分,如需更直观使用请配合前端进行页面渲染)

一:首先获取数据库的所有表名和表的字段sql代码如下:

    <!--  获取所有表名  -->
    <select id="showTables" resultType="java.lang.String">
        SHOW TABLES;
    </select>

    <!--根据表名获取该表下的所有字段-->
    <select id="showColumns" resultType="com.alibaba.fastjson.JSONObject">
        SHOW COLUMNS  FROM ${tableName};
    </select>

二:mapper接口层代码如下:

    /**
     * 获取所有表名
     * @return  该数据库下的所有表名
     */
    List<String> showTables();

    /**
     * 根据表名获取该表下的所有字段
     * @param tableName 要获取字段的表名
     * @return          该表下的所有字段
     */
    List<JSONObject> showColumns(@Param("tableName") String tableName);

三:业务代码如下:(为了方便看这里省略业务层直接在controller实现)文章来源地址https://www.toymoban.com/news/detail-825060.html

   @Autowired
    private ERMapper erMapper;
    @GetMapping("/getEr")
    @ApiOperation(value = "获取er关系")
    public Map getEr(){
        List<String> list = erMapper.showTables();
        Map<String, List<String>> map = new HashMap<>();
        Map<String, String> tableMap = new HashMap<>();
        List<String> ts = new ArrayList<>();
        for (String s : list) {
            String table = s.replace("erp_", "");
            ts.add(table);
            tableMap.put(table, s);
        }
        for (String s : list) {
            List<JSONObject> jsonList = erMapper.showColumns(s);
            String erp_ = s.replace("erp_", "");
            ArrayList<String> tList = new ArrayList<>();
            for (JSONObject jsonObject : jsonList) {
                String field = jsonObject.getString("Field");
                if (field.endsWith("_id")){
                    String replaceId = field.replace("_id", "");
                    if (ts.contains(replaceId)){
                        tList.add(tableMap.get(replaceId));
                    }
                }
            }
            map.put(s, tList);
            log.info("s:{}", erp_);
        }

        return map;
    }

到了这里,关于java代码实现自动生成数据库表er图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库自动生成Models文件导入Django

    在Django项目使用数据库时,可以有三种方式:           1.直接编写app内的models文件,然后自动生成MySQL数据库          2.直接在MySQL中将数据库编写好,然后不使用models,而是在views中利用PyMySQL编写数据库链接等操作         3.MySQL库自动生成models文件进行连接使用 这

    2023年04月08日
    浏览(43)
  • .net 连接MySql数据库 + 使用Microsoft.EntityFrameworkCore.Design自动生成实体类 + 使用EFCore操作数据库

    先准备好一个mysql数据库(我这里准备的是test数据库,里面又准备了两张表,其中book表中只有两个字段,Id(bigint类型)和 Name(varchar类型)) 使用VS新建一个asp.net core web api项目(我这里使用的框架是.net5.0的,确保版本对应很重要) 打开终端 进到项目所在目录(我这里解

    2024年02月07日
    浏览(48)
  • 在idea工具下,使用protobuf自动生成java代码,超详细教程

    新项目需要使用 google protobuf 生成java代码 开始第一步,网上很多教程都说下载 protobuf support插件,但是我下载了很多idea版本,就是找不到这个 protobuf support 插件 在idea 中选择file -settings -plugin , 搜索protobuf,一般都是有以下几个选项: 这里,我选择下载 protobuf  generate 、-----

    2024年02月16日
    浏览(49)
  • auto.js autojs pro9 autox.js实现adb自动化测试脚本开发自动生成代码 防无障碍检测

    不需要开无障碍就可以实现自动化 ,功能上和无障碍效果一样, 但是可以过目标app的检测,因为软件基本上都不检测adb(usb调试), 游戏脚本的福音 ,最主要是可以 直接生成自动化代码 ,所以写adb的自动化脚本 和无障碍的自动化脚本都同样简单高效,傻瓜式操作。 对于

    2024年01月19日
    浏览(58)
  • 最新ThinkPHP版本实现证书查询系统,实现批量数据导入,自动生成电子证书

    前提:朋友弄了一个培训机构,培训考试合格后,给发证书,需要一个证书查询系统。委托我给弄一个,花了几个晚上给写的证书查询系统。 实现功能: 前端按照姓名+手机号码进行证书查询 证书信息展示+证书展示,支持点击下载 后端证书信息录入+带一寸照片数据批量导入

    2024年01月23日
    浏览(48)
  • Python+ChatGPT,Python与ChatGPT结合进行数据分析、自动生成代码、人工智能建模、论文高效撰写等

    熟练地掌握ChatGPT4.0在数据分析、自动生成代码等方面的强大功能,同时更加系统地学习人工智能(包括传统机器学习、深度学习等)的基础理论知识,以及具体的代码实现方法, 掌握ChatGPT4.0在科研工作中的各种使用方法与技巧,以及人工智能领域经典机器学习算法(BP神经

    2024年01月19日
    浏览(79)
  • AIGC for code(AIGC/AI生成代码/生成式AI之代码生成/AI编程工具/自动编程/自动生成代码/智能编程工具/智能编程系统)

    AIGC,Artificial Intelligence Generated Content,人工智能生成内容 AIGC for code,AI生成代码 Copilot是由微软的子公司Github与openAI共同开发的人工智能(AI)驱动的编程助手。它能够直接在你的编辑器中,为你提供代码片段或者整个函数的建议,以帮助你更快地编写和完成代码。这个工具

    2024年02月17日
    浏览(77)
  • 源生成器:根据需要自动生成机械重复代码

    本文概述了利用.NET Compiler Platform(“Roslyn”)SDK 附带的 源生成器 (Source Generator)自动生成机械重复的代码。关于这部分的基础入门知识可以在MSDN [1] 学到。 本文 默认 已经有一个解决方案,包含两个项目。一个是普通C#项目,依赖于另一个源生成器项目。 此处以 Dependenc

    2024年02月01日
    浏览(77)
  • AI自动生成代码工具

    AI自动生成代码工具是一种利用人工智能技术来辅助或自动化软件开发过程中的编码任务的工具。这些工具使用机器学习和自然语言处理等技术,根据开发者的需求生成相应的源代码。以下是一些常见的AI自动生成代码工具,希望对大家有所帮助。北京木奇移动技术有限公司,

    2024年02月04日
    浏览(44)
  • AIGC for code(text-to-codeAIGC/AI生成代码/生成式AI之代码生成/AI编程工具/自动编程/自动生成代码/智能编程工具/智能编程系统)

    AIGC,Artificial Intelligence Generated Content,人工智能生成内容 AIGC for code,AI生成代码 Copilot是由微软的子公司Github与openAI共同开发的人工智能(AI)驱动的编程助手。它能够直接在你的编辑器中,为你提供代码片段或者整个函数的建议,以帮助你更快地编写和完成代码。这个工具

    2024年02月15日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包