探索Dataql_v0.0.1

文件名稱 版本號 作者 qq 版本
探索Dataql v0.0.1 學生宮布 8416837 SpringBoot 2.2.6
Dataql 4.1.7

使用它

環境

hasor IoC DI AOP框架
JSR223

JDK1.6開始 Java引入了 JSR223 規範,通過該規範可以用一致的形式在JVM上執行一些腳本語言。 DataQL 默認實現了這一規範的接入API,這就使得開發者可以脫離 Hasor 容器的特性獨立的使用 DataQL 查詢引擎。 這種方法無需考慮 Hasor 容器生命週期問題。

選擇

因爲我們已經有Spring框架了,因此選擇JSR223

代碼

  • 引入依賴
<dependency>
    <groupId>net.hasor</groupId>
    <artifactId>hasor-dataql</artifactId>
    <version>4.1.7</version><!-- 查看最新版本:https://mvnrepository.com/artifact/net.hasor/hasor-dataql -->
</dependency>
  • HelloWorld
    代碼 執行
public static void main(String[] args) {
        ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("dataql");
        SimpleScriptContext params = new SimpleScriptContext();
        params.setBindings(scriptEngine.createBindings(), ScriptContext.GLOBAL_SCOPE);
        params.setBindings(scriptEngine.createBindings(), ScriptContext.ENGINE_SCOPE);
        params.setAttribute("uid", "uid form engine", ScriptContext.ENGINE_SCOPE);
        params.setAttribute("sid", "sid form global", ScriptContext.GLOBAL_SCOPE);
//
        Object eval = null;
        try {
            eval = scriptEngine.eval("return [${uid},${sid}]", params);
        } catch (ScriptException e) {
            e.printStackTrace();
        }
        DataModel dataModel = ((QueryResult) eval).getData();

        System.out.println(String.format("%s === %s - %s", "響應", ((ListModel) dataModel).get(0).asOri(), ((ListModel) dataModel).get(1).asOri()));
    }

輸出:

響應 === uid form engine - sid form global

UDF模式

查看教程udf官方教程
註冊udf,與Query綁定。使用dataql API調用指定的Query,此次操作將調用Dataql的UDF邏輯獲得數據,dataql根據入參對數據做二次處理,返回參數。

DAO模式

查看教程dao官方教程
與udf差不多。將DAO接口與sql綁定,使用Maven插件生成代碼。運行代碼即操作數據庫。
下圖的ql文件,就是定義、註冊綁定操作:
在這裏插入圖片描述
1)編寫ql文件,裏面包含了Type與數據獲取。Type:查詢Query或者對象;數據獲取:從數據源或者其它地方獲取數據;
2)安裝插件,掃描ql文件,生成Java代碼;
3)將Java代碼放置於項目,優化後使用;
4)啓動項目,執行邏輯。

如果是UDF模式,則將Type與服務層的方法或函數綁定,一旦執行Type Query時,則執行函數並運用ql裏的配置對數據二次處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章