終於出湖北了,封閉2個月,家裏沒電腦,感受很久沒自主擼代碼啊啊啊啊啊啊啊啊啊啊啊啊啊。html
鏈接上篇文章Spring Boot 入門(十二):報表導出,對比poi、jxl和esayExcel的效率,繼續從入門到入坑。java
dataWay剛剛開源,具體介紹能夠去官網看https://www.hasor.net/web/overview/about.html,中國的開源軟件,終於不用看蝌蚪英文了。mysql
1.dataWay已經捐獻給Apache,後續有可靠團隊維護,能夠放心大膽使用git
2.dataWay只支持JDK1.8及以上,目前只支持mysql和oracle數據庫web
3.目前發展到4.1.4,最近看了些博客,很多人反應存在少量不足spring
1.代碼sql
spring boot 集成Dataway網上已經有很多很好的博客了,官網https://www.hasor.net/web/dataway/for_boot.html也很詳細,我簡答的貼下相關代碼數據庫
1 <!--begin dataWay--> 2 <!--hasor-spring 負責 Spring 和 Hasor 框架之間的整合--> 3 <dependency> 4 <groupId>net.hasor</groupId> 5 <artifactId>hasor-spring</artifactId> 6 <version>4.1.3</version> 7 </dependency> 8 <!--hasor-dataway 是工做在 Hasor 之上,利用 hasor-spring 咱們就可使用 dataway了。--> 9 <dependency> 10 <groupId>net.hasor</groupId> 11 <artifactId>hasor-dataway</artifactId> 12 <version>4.1.3-fix20200414</version><!-- 4.1.3 包存在UI資源缺失問題 --> 13 </dependency> 14 <!--end dataWay-->
1 #dataway config 2 # 是否啓用 Dataway 功能(必選:默認false) 3 HASOR_DATAQL_DATAWAY: true 4 # 是否開啓 Dataway 後臺管理界面(必選:默認false) 5 HASOR_DATAQL_DATAWAY_ADMIN: true 6 # dataway API工做路徑(可選,默認:/api/) 7 HASOR_DATAQL_DATAWAY_API_URL: /api/ 8 # dataway-ui 的工做路徑(可選,默認:/interface-ui/) 9 HASOR_DATAQL_DATAWAY_UI_URL: /interface-ui/ 10 # SQL執行器方言設置(可選,建議設置) 11 HASOR_DATAQL_FX_PAGE_DIALECT: mysql
1 package com.learn.hello.system.common.hasor; 2 3 import net.hasor.core.ApiBinder; 4 import net.hasor.core.DimModule; 5 import net.hasor.db.JdbcModule; 6 import net.hasor.db.Level; 7 import net.hasor.spring.SpringModule; 8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.stereotype.Component; 10 11 import javax.sql.DataSource; 12 13 /** 14 * @ClassName DatawayModule 15 * @Deccription TODO 16 * @Author DZ 17 * @Date 2020/5/13 21:48 18 **/ 19 @DimModule 20 @Component 21 public class DatawayModule implements SpringModule { 22 @Autowired 23 private DataSource dataSource = null; 24 @Override 25 public void loadModule(ApiBinder apiBinder) throws Throwable { 26 apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource)); 27 } 28 }
1 CREATE TABLE `interface_info` ( 2 `api_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', 3 `api_method` varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT、POST', 4 `api_path` varchar(512) NOT NULL COMMENT '攔截路徑', 5 `api_status` int(2) NOT NULL COMMENT '狀態:0草稿,1發佈,2有變動,3禁用', 6 `api_comment` varchar(255) NULL COMMENT '註釋', 7 `api_type` varchar(24) NOT NULL COMMENT '腳本類型:SQL、DataQL', 8 `api_script` mediumtext NOT NULL COMMENT '查詢腳本:xxxxxxx', 9 `api_schema` mediumtext NULL COMMENT '接口的請求/響應數據結構', 10 `api_sample` mediumtext NULL COMMENT '請求/響應/請求頭樣本數據', 11 `api_option` mediumtext NULL COMMENT '擴展配置信息', 12 `api_create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間', 13 `api_gmt_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間', 14 PRIMARY KEY (`api_id`) 15 ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway 中的API'; 16 17 CREATE TABLE `interface_release` ( 18 `pub_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Publish ID', 19 `pub_api_id` int(11) NOT NULL COMMENT '所屬API ID', 20 `pub_method` varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT、POST', 21 `pub_path` varchar(512) NOT NULL COMMENT '攔截路徑', 22 `pub_status` int(2) NOT NULL COMMENT '狀態:0有效,1無效(可能被下線)', 23 `pub_type` varchar(24) NOT NULL COMMENT '腳本類型:SQL、DataQL', 24 `pub_script` mediumtext NOT NULL COMMENT '查詢腳本:xxxxxxx', 25 `pub_script_ori` mediumtext NOT NULL COMMENT '原始查詢腳本,僅當類型爲SQL時不一樣', 26 `pub_schema` mediumtext NULL COMMENT '接口的請求/響應數據結構', 27 `pub_sample` mediumtext NULL COMMENT '請求/響應/請求頭樣本數據', 28 `pub_option` mediumtext NULL COMMENT '擴展配置信息', 29 `pub_release_time`datetime DEFAULT CURRENT_TIMESTAMP COMMENT '發佈時間(下線不更新)', 30 PRIMARY KEY (`pub_id`) 31 ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 發佈歷史。'; 32 33 create index idx_interface_release on interface_release (pub_api_id);
2.啓動api
按照官網,啓動的log中須要有dataway相關日誌,纔算啓動成功,以下安全
我啓動的時候,就沒有相關日誌,也能正常使用,如今還不知道具體緣由,後續探討。以下個人啓動log。你們啓動後發現沒有相關日誌能夠先試試dataway可否使用(可否訪問dataWay的url),若是能正常使用,能夠先忽略日誌問題。
3.配置接口
訪問url:http://localhost:8080/interface-ui/#/
這裏有個坑:執行sql返回Unknown SqlMode 如圖
是由於sql不在第一行,第一行會自動生成一個默認註釋,刪掉註釋就行了。如圖
此外,須要攔截器中過濾dataWay的訪問url,不然會被攔截,致使只有登陸狀況下才能訪問。注意安全配置