io.qross.pql.PQL 类

PQL 类是整个 PQL 语句的入口类,Qross 项目的其他应用也与 PQL 类密不可分。PQL 类包含了一些简单的重载和方法用于执行 PQL 过程。

上例两行代码是最简单的方法,PQL 类还提供了其他方法进行更多设置。注意,使用 PQL 类需要先引入 PQL 依赖,详见使用 PQL

PQL 构造函数

构造函数一般不会直接使用,多用静态方法。

PQL 静态方法

Scala 代码:

Java 代码:

向 PQL 传递参数

Scala 代码:

Java 代码:

要执行的 PQL 过程可以接受外部传参,见 向 PQL 过程传递参数,就是通过这个方法向 PQL 过程传递参数。分别可以接受单个值、Map 键值对、或者查询字符串(格式 name=Tom&age=18&score=89)、Json 对象字符串等形式。placeDefault方法的作业时当变量不存在时才赋值,主要用于 OneApi 中的传参。

设置 PQL 过程的变量并赋值

Scala 代码:

Java 代码:

通过这个方法可以为 PQL 过程预设一些变量,在 PQL 过程中可以使用。和place方法一样,也接受单个变量、多个键值对组成的多个变量及查询字符串,还接受把整个数据行DataRow的数据传给 PQL 当变量(数据行DataRow中的每一项都是一个变量)。与参数不同,变量是有自己类型的,参数都是字符串类型。

placeset方法区别为:place方法替换参数占位符#{param}并且附加同名变量,例如place的参数值为name=Tom,那么会替换#{name}Tom并且赋值一个变量$nameTom;而set方法只赋值变量$nameTom,没有其他操作。即setplace的子操作。

把鉴权信息传给 PQL

有时我们应用需要用户验证,以根据用户的角色控制权限。PQL 提供了登录功能,但不验证,只是接收登录信息,以方便用户在编写 PQL 时能得到用户的登录信息。

Scala 代码:

Java 代码:

除了userId, usernamerole三项基本信息以下,可以通过Map结构向PQL传递更多的鉴权信息。如果你的Sping Boot项目里应用了Spring Security,可以这样PQL.open(pql).signIn(UserWebAuthenticationDetails.getCredential())一次性把鉴权信息传入。鉴权信息在PQL中以全局变量的方式访问,如@userid@username$role等,Map 结构中的鉴权信息也是通过全局变量的方式访问。

执行 PQL 并返回结果

Scala代码:

Java代码:

完整示例

Scala代码:

Java代码:

关于 PQL 类的返回结果,请参阅 OUTPUT 语句


参考链接


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!