# 一键数据库逆向

# 回顾

通过上一篇文章 mssql数据库 的介绍,目前已经支持主流数据库,包括MySql,PostgreSql,Oracle,Microsoft SQL Server等,通过配置零代码实现了CRUD增删改查RESTful API。如果是全新的项目,通过配置元数据并且创建物理表,从而自动实现业务数据的CRUD增删改查。但是如果数据库表已经存在的情况下,如何通过配置表单元数据进行管理呢?这时候数据库逆向功能就很有必要了。 之前另外一篇文章 基于Vue和Quasar的前端SPA项目实战之数据库逆向(十二)已经实现了mysql数据库单个表数据库逆向功能,但是不能批量操作,本文主要介绍一键数据库批量逆向功能,支持上述4大数据库,0代码1秒实现所有业务表单CRUD增删改查RESTful API。

# 简介

数据库逆向就是通过读取数据库物理表schema信息,然后生成表单元数据,可以看成“dbfirst”模式,即先有数据库表,然后根据表生成元数据,逆向表单后续操作和普通动态表单类似。可以一次性选择多个表单,数据库逆向功能在后台自动完成。

# UI界面

以开源电商项目macrozheng/mall为例,一共80个左右业务表单,全部进行逆向。

产品product数据库 导入sql到mysql数据库

数据库逆向 数据库逆向页面自动扫描表单,批量选择后一键逆向

# 核心原理

# 查询数据库元数据代码

public Map<String, Object> getMetaData(String tableName) {
    Map<String, Object> map = new HashMap<String, Object>();

    String sql = "SHOW TABLE STATUS LIKE '" + tableName + "'";
    map = namedParameterJdbcTemplate.getJdbcTemplate().queryForMap(sql);

    sql = "SHOW FULL COLUMNS FROM " + getSqlQuotation() + tableName + getSqlQuotation();
    List<Map<String, Object>> descList = namedParameterJdbcTemplate.getJdbcTemplate().queryForList(sql);
    map.put("columns", descList);

    sql = "SHOW INDEX FROM " + getSqlQuotation() + tableName +  getSqlQuotation();
    List<Map<String, Object>> indexList = namedParameterJdbcTemplate.getJdbcTemplate().queryForList(sql);
    map.put("indexs", indexList);

    return map;
 }

# 产品pms_product数据库元数据

tableMeta 产品pms_product表、列、详细定义信息

columnMeta 产品pms_product列详细定义信息

# 逆向

通过逆向的方式将数据库元数据转化成crudapi元数据库,从而实现了一键crud 产品product元数据 产品crudapi元数据

# 业务数据CRUD

产品product业务数据列表 查询产品数据列表

产品product业务数据编辑 产品数据编辑

订单order业务数据列表 查询订单数据列表

# 其它数据库

PostgreSql,Oracle,Microsoft SQL Server数据库对应的数据库元数据查询方式有些区别,不过最终都统一转化为crudapi元数据库,crudapi元数据库屏蔽了不同数据库的差异,实现通用类型的元数据管理,从而实现各种类型数据库的的逆向功能。

# 小结

本文主要介绍了数据库逆向功能,在数据库表单已经存在的基础上,通过数据库逆向功能,快速生成元数据,不需要一行代码,我们就可以得到已有数据库的基本crud功能,包括API和UI。类似于phpmyadmin等数据库UI管理系统,但是比数据库UI管理系统更灵活,更友好。通过数据库批量逆向方式,需要一秒,就可以零代码实现已有数据库的CRUD功能。

实现方式 表单数量 代码量 时间 稳定性
传统开发 80 2万行左右 2个月/人 bug多,需要测试成本
crudapi系统 80 0行 1秒 基本为0

综上所述,利用crudapi系统可以极大地提高工作效率和节约成本,让数据处理变得更简单!

# crudapi简介

crudapi是crud+api组合,表示增删改查接口,是一款零代码可配置的产品。使用crudapi可以告别枯燥无味的增删改查代码,让您更加专注业务,节约大量成本,从而提高工作效率。 crudapi的目标是让处理数据变得更简单,所有人都可以使用! 无需编程,通过配置自动生成crud增删改查RESTful API,提供后台UI管理业务数据。基于主流的开源框架,拥有自主知识产权,支持二次开发。

# demo演示

crudapi属于产品级的零代码平台,不同于自动代码生成器,不需要生成Controller、Service、Repository、Entity等业务代码,程序运行起来就可以使用,真正0代码,可以覆盖基本的和业务无关的CRUD RESTful API。

官网地址:https://crudapi.cn (opens new window)
测试地址:https://demo.crudapi.cn/crudapi/login (opens new window)

# 附源码地址

# GitHub地址

https://github.com/crudapi/crudapi-admin-web (opens new window)

# Gitee地址

https://gitee.com/crudapi/crudapi-admin-web (opens new window)

由于网络原因,GitHub可能速度慢,改成访问Gitee即可,代码同步更新。

# 目录

# crudapi系列一 入门

# crudapi系列二 序列号

# crudapi系列三 表关系

# crudapi系列四 表关系高阶

# crudapi系列五 数据条件查询和分页

# crudapi系列六 RBAC权限模型

# crudapi系列七 表单设计

# crudapi系列八 应用场景

# crudapi系列九 多数据库之postgresql

# crudapi系列十 甲骨文oracle数据库

# crudapi系列十一 微软mssql数据库