spring急速开发之hasor-dataway

急速开发?

简单来看就是没有经典的MVC架构。迅速的完成数据库数据与接口之间的对应关系,这里我们简单的理解为API到数据库执行SQL的整个对应过程。

为什么要玩这个呢?原因在于我之前公司架构师提出的新概念项目,完全低代码开发,前端使用类似于若依一样的组件拼装模式,后端则采用公司内部所说的***项目模式(现在我才摸索到其实就是类似于hasor的dataway使用UI配置接口以及对应的sql)。

使用界面

配置接口

spring急速开发之hasor-dataway_第1张图片

测试与发布接口 

 spring急速开发之hasor-dataway_第2张图片

 

如何测试?

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语法。 

spring急速开发之hasor-dataway_第3张图片

 这里这个技术怕是接单团队没有遇到呀,投入毕业设计接单团队里绝对是一个贼吃香的技术栈。当然你要会写SQL,会写远程调用的分布式系统,因为你需要使用网关去分发访问这个微服务的远程接口,其次你还要对响应的JSON进行配置与接收,以及序列化等操作,能说简单,做单体项目,不复杂事务(由于无代码管理,事务无法保证安全执行完毕!!!),投入生产的话一定是经过封装二次开发的,且在分布式事务以及数据处理上设计一个合理的解决方案(我感觉性能上也得估摸估摸,直接读数据库的话,接口流量大不会读穿吗?一个查询请求要读两次库!!!)。

你可能感兴趣的:(web学习,springboot,springcloud,spring,java,后端)