spring急速开发之hasor-dataway

急速开发?

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

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

使用界面

配置接口

测试与发布接口 

 

 

如何测试?

1、导入需要的依赖(需要注意的是版本在4.2.5的配置与下面的配置不同,会报错,解决方案是查看官方文档)

        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-spring</artifactId>
            <version>4.1.6</version>
        </dependency>
        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-dataway</artifactId>
            <version>4.1.6</version>
        </dependency>

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进行配置与接收,以及序列化等操作,能说简单,做单体项目,不复杂事务(由于无代码管理,事务无法保证安全执行完毕!!!),投入生产的话一定是经过封装二次开发的,且在分布式事务以及数据处理上设计一个合理的解决方案(我感觉性能上也得估摸估摸,直接读数据库的话,接口流量大不会读穿吗?一个查询请求要读两次库!!!)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ForestSpringH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值