# 一键数据库逆向
# 回顾
通过上一篇文章 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个左右业务表单,全部进行逆向。
导入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数据库元数据
产品pms_product表、列、详细定义信息
产品pms_product列详细定义信息
# 逆向
通过逆向的方式将数据库元数据转化成crudapi元数据库,从而实现了一键crud 产品crudapi元数据
# 业务数据CRUD
查询产品数据列表
产品数据编辑
查询订单数据列表
# 其它数据库
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数据库
← 微软mssql数据库 多数据源 →