PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
PQL 类是整个 PQL 语句的入口类,Qross 项目的其他应用也与 PQL 类密不可分。PQL 类包含了一些简单的重载和方法用于执行 PQL 过程。
上例两行代码是最简单的方法,PQL 类还提供了其他方法进行更多设置。注意,使用 PQL 类需要先引入 PQL 依赖,详见使用 PQL。
构造函数一般不会直接使用,多用静态方法。
Scala 代码:
Java 代码:
open
方法只打开 PQL 语句或文件,但不运行,返回 PQL 类。run
方法打开 PQL 语句或文件并运行,返回运行 PQL 的结果。embedded
是嵌入式 PQL,可用于模板引擎,是 Voyager 的基础。check
方法用于检查 PQL 过程是否有语法错误,正确时返回空字符串,出错时返回第一个错误的文本信息。recognizeParameters
方法用于识别 PQL 过程中的参数。Scala 代码:
Java 代码:
要执行的 PQL 过程可以接受外部传参,见 向 PQL 过程传递参数,就是通过这个方法向 PQL 过程传递参数。分别可以接受单个值、Map 键值对、或者查询字符串(格式 name=Tom&age=18&score=89)、Json 对象字符串等形式。placeDefault
方法的作业时当变量不存在时才赋值,主要用于 OneApi 中的传参。
Scala 代码:
Java 代码:
通过这个方法可以为 PQL 过程预设一些变量,在 PQL 过程中可以使用。和place
方法一样,也接受单个变量、多个键值对组成的多个变量及查询字符串,还接受把整个数据行DataRow
的数据传给 PQL 当变量(数据行DataRow
中的每一项都是一个变量)。与参数不同,变量是有自己类型的,参数都是字符串类型。
place
和set
方法区别为:place
方法替换参数占位符#{param}
并且附加同名变量,例如place
的参数值为name=Tom
,那么会替换#{name}
为Tom
并且赋值一个变量$name
为Tom
;而set
方法只赋值变量$name
为Tom
,没有其他操作。即set
是place
的子操作。
有时我们应用需要用户验证,以根据用户的角色控制权限。PQL 提供了登录功能,但不验证,只是接收登录信息,以方便用户在编写 PQL 时能得到用户的登录信息。
Scala 代码:
Java 代码:
除了userId
, username
和role
三项基本信息以下,可以通过Map结构向PQL传递更多的鉴权信息。如果你的Sping Boot项目里应用了Spring Security,可以这样PQL.open(pql).signIn(UserWebAuthenticationDetails.getCredential())
一次性把鉴权信息传入。鉴权信息在PQL中以全局变量的方式访问,如@userid
、@username
、$role
等,Map 结构中的鉴权信息也是通过全局变量的方式访问。
Scala代码:
Java代码:
Scala代码:
Java代码:
关于 PQL 类的返回结果,请参阅 OUTPUT 语句。
参考链接