初步了解快速开发框架-Hasor


前言

在快速开发的年代,你是否还在为简单的后台管理系统中的那些表单查询无脑的重复着Mapper、Dao、Service、ServiceImpl、Controller这无限的循环中而苦恼,今天接触到了一个新框架Hasor,将省去这一系列操作,只需要在可视化的页面编写sql语句即可完成一个接口的开发。只需要一条sql,没看错!此次搭建项目采用IDEA、JDK8

第一步:创建SpringBoot


步奏一直Next下来后 项目就创建好了。

第二步:添加需要的依赖

 <dependency>
            <!-- 数据库连接 -->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
         <!-- lombok 可有可无JDK8带的挺好用-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
         <!-- hasor SpringBoot整合依赖-->
        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-spring</artifactId>
            <version>4.1.3</version>
        </dependency>
        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-web</artifactId>
            <version>4.1.3</version>
        </dependency>
        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-dataway</artifactId>
            <version>4.1.3-fix20200414</version>
        </dependency>

第三步:配置文件

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/数据库名称?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password:
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      maximum-pool-size: 150
      minimum-idle: 20
  freemarker:
    cache: false
    charset: utf-8
    content-type: text/html
    #    prefix: /templates
    suffix: .html
    template-loader-path: classpath:templates

# 是否启用 Dataway 功能(必选:默认false)
HASOR_DATAQL_DATAWAY: true

  # 是否开启 Dataway 后台管理界面(必选:默认false)
HASOR_DATAQL_DATAWAY_ADMIN: true

  # dataway  API工作路径(可选,默认:/api/)
HASOR_DATAQL_DATAWAY_API_UR: /api/

  # dataway-ui 的工作路径(可选,默认:/interface-ui/)
HASOR_DATAQL_DATAWAY_UI_URL: /interface-ui/

  # SQL执行器方言设置(可选,建议设置)
HASOR_DATAQL_FX_PAGE_DIALECT: mysql

第四步:建表,此步很重要,表是用来存储你生成的接口路径及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_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_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);

第五步:配置基于Spring的数据源模块

package hasor.junner.module;

import lombok.extern.slf4j.Slf4j;
import net.hasor.core.ApiBinder;
import net.hasor.core.DimModule;
import net.hasor.db.JdbcModule;
import net.hasor.db.Level;
import net.hasor.spring.SpringModule;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.sql.DataSource;

/**
 * 配置基于Spring的数据源模块
 *
 * @author Kevin
 */
@Slf4j
@DimModule
@Component
public class DataSourceModule implements SpringModule {

    @Autowired
    private DataSource dataSource;

    /**
     * 配置数据源模块到Hasor
     *
     * @param apiBinder
     * @throws Throwable
     */
    @Override
    public void loadModule(ApiBinder apiBinder) throws Throwable {
        // DataSource from Spring boot into Hasor
        apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));
    }
}

第六步:SpringBoot启动类增加Hasor注解

package hasor.junner;

import net.hasor.spring.boot.EnableHasor;
import net.hasor.spring.boot.EnableHasorWeb;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@EnableHasor
@EnableHasorWeb
@SpringBootApplication
public class JunnerApplication {

    public static void main(String[] args) {
        SpringApplication.run(JunnerApplication.class, args);
    }

}

第七步:启动项目,当你看到了下面输出,说明配置成功了。


第八步:打开UI配置界面,界面如下

第九步:添加新接口


第十步:开始编写SQL点右上角的开始按钮运行

第十一步:保存打包发布,点完发布你就可以用postMan调用接口了


PostMan返回结果:

第十二步:查看已发布的接口,添加修改删除都可,大家可以自己编写SQL玩一玩

PS:这是一个快速开发的框架,添加完接口,你在返回项目看结构,没有多任何一行代码,所以他不是代码生成器。具体是什么,我想应该是生成在jar包里面了,用反射机制读取出来,编写需要用java代码处理逻辑的代码还是需要手动编写代码的。记得要规范写代码,别忘了Mapper、Dao、Service、ServiceImpl、Controller,祝大家能碰到代码规范的同事!!!
最后附上完整代码git地址:https://gitee.com/carollIsBlackManba/hasor


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM