初步了解快速開發框架-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