探索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里的配置对数据二次处理。

猜你喜欢

转载自blog.csdn.net/cc007cc009/article/details/106780215