文件名稱 | 版本號 | 作者 | 版本 | |
---|---|---|---|---|
探索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裏的配置對數據二次處理。