简单来看就是没有经典的MVC架构。迅速的完成数据库数据与接口之间的对应关系,这里我们简单的理解为API到数据库执行SQL的整个对应过程。
为什么要玩这个呢?原因在于我之前公司架构师提出的新概念项目,完全低代码开发,前端使用类似于若依一样的组件拼装模式,后端则采用公司内部所说的***项目模式(现在我才摸索到其实就是类似于hasor的dataway使用UI配置接口以及对应的sql)。
配置接口
测试与发布接口
1、导入需要的依赖(需要注意的是版本在4.2.5的配置与下面的配置不同,会报错,解决方案是查看官方文档)
net.hasor
hasor-spring
4.1.6
net.hasor
hasor-dataway
4.1.6
2、跑数据库SQL(牢记一点:你节省的代码都在数据库里和导入的依赖里)
CREATE TABLE `interface_info` (
`api_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`api_method` varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT、POST',
`api_path` varchar(512) NOT NULL COMMENT '拦截路径',
`api_status` int(2) NOT NULL COMMENT '状态:0草稿,1发布,2有变更,3禁用',
`api_comment` varchar(255) NULL COMMENT '注释',
`api_type` varchar(24) NOT NULL COMMENT '脚本类型:SQL、DataQL',
`api_script` mediumtext NOT NULL COMMENT '查询脚本:xxxxxxx',
`api_schema` mediumtext NULL COMMENT '接口的请求/响应数据结构',
`api_sample` mediumtext NULL COMMENT '请求/响应/请求头样本数据',
`api_option` mediumtext NULL COMMENT '扩展配置信息',
`api_create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`api_gmt_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`api_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway 中的API';
CREATE TABLE `interface_release` (
`pub_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Publish ID',
`pub_api_id` int(11) NOT NULL COMMENT '所属API ID',
`pub_method` varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT、POST',
`pub_path` varchar(512) NOT NULL COMMENT '拦截路径',
`pub_status` int(2) NOT NULL COMMENT '状态:0有效,1无效(可能被下线)',
`pub_type` varchar(24) NOT NULL COMMENT '脚本类型:SQL、DataQL',
`pub_script` mediumtext NOT NULL COMMENT '查询脚本:xxxxxxx',
`pub_script_ori` mediumtext NOT NULL COMMENT '原始查询脚本,仅当类型为SQL时不同',
`pub_schema` mediumtext NULL COMMENT '接口的请求/响应数据结构',
`pub_sample` mediumtext NULL COMMENT '请求/响应/请求头样本数据',
`pub_option` mediumtext NULL COMMENT '扩展配置信息',
`pub_release_time`datetime DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间(下线不更新)',
PRIMARY KEY (`pub_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 发布历史。';
create index idx_interface_release on interface_release (pub_api_id);
3、增加配置项(application文件内容)
HASOR_DATAQL_DATAWAY=true
HASOR_DATAQL_DATAWAY_ADMIN=true
HASOR_DATAQL_FX_PAGE_DIALECT=mysql
4、定义配置模型并导入数据源
@DimModule
@Component
public class HasorModule implements SpringModule {
@Autowired
private DataSource dataSource = null;
@Override
public void loadModule(ApiBinder apiBinder) throws Throwable {
apiBinder.installModule(new JdbcModule(Level.Full,this.dataSource));
}
}
5、配置启动类
@SpringBootApplication(scanBasePackages = {"com.hasor.spring_hasor.hasor"})
@EnableHasor()
@EnableHasorWeb()
public class SpringHasorApplication {
public static void main(String[] args) {
SpringApplication.run(SpringHasorApplication.class, args);
}
}
我们可以在数据库表里发现,我们配置的接口信息与sql语句都存在数据库表里了,这里你需要学习dataQL语法。
这里这个技术怕是接单团队没有遇到呀,投入毕业设计接单团队里绝对是一个贼吃香的技术栈。当然你要会写SQL,会写远程调用的分布式系统,因为你需要使用网关去分发访问这个微服务的远程接口,其次你还要对响应的JSON进行配置与接收,以及序列化等操作,能说简单,做单体项目,不复杂事务(由于无代码管理,事务无法保证安全执行完毕!!!),投入生产的话一定是经过封装二次开发的,且在分布式事务以及数据处理上设计一个合理的解决方案(我感觉性能上也得估摸估摸,直接读数据库的话,接口流量大不会读穿吗?一个查询请求要读两次库!!!)。