查询语句支持JPA JPQL语句,如下面的语句从系统表Task中获取待办:
SELECT o FROM Task o WHERE o.person = :person
JPQL官网:https://www.objectdb.com/java/jpa/query/jpql/structure
中文简介:https://www.codercto.com/a/4338.html
在v8.0及以后版本中,查询语句支持原生的SQL 语法,如下面的语句从系统表Task中获取待办:
SELECT * FROM Task WHERE person = :person
w3schoole网站:https://www.w3schools.com/sql/default.asp
中文网站:https://www.runoob.com/sql/sql-tutorial.html
差异项 | JPQL | SQL | 说明 |
---|---|---|---|
系统表名 | Task TaskCompleted Read ReadCompleted Work WorkCompleted Review Document | PP_C_TASK PP_C_TASKCOMPLETED PP_C_READ PP_C_READCOMPLETED PP_C_WORK PP_C_WORKCOMPLETED PP_C_REVIEW CMS_DOCUMENT | 待办已办 待阅 已阅 流程实例 已完成流程实例 可阅读 内容管理文档 |
数据表名(自建表) | TableName | QRY_DYN_TABLENAME | 假如创建数据表设置的名称为“TableName”,则SQL取的名称为 "QRYDYN"前缀加名称的大写。 |
字段名 | id | xid | 字段以id为例,SQL的字段为"x"前缀加字段名。 |
值 | SELECT o FROM Task o WHERE o.person = '张三' 或 SELECT o FROM Task o WHERE o.person = "张三" |
SELECT * FROM PP_C_TASK WHERE person = '张三' |
JPQL的值可以使用单引号和双引号,SQL只能使用单引号。建议都使用单引号。 |
查询语句中的where语句的值可以使用json传入,如:
查询语句的设计为 :
select o from tableName o where o.name=:n
在调用查询语句服务的时候传入 json:
{
"n" : "zhangsan"
}
最终系统在后台根据这些设计拼接成为如下语句:
select o from tableName o where o.name='zhangsan'
如下图所示:
了解JPQL语句动态传参可以点击链接查看:https://www.objectdb.com/java/jpa/query/parameter
在V8.0中,平台支持用问号加数字的形式来传where语句的值,作用和冒号动态传参类似。,如:
查询语句的设计为 :
select o from tableName o where o.name= ?1
在调用查询语句服务的时候传入 json:
{
"?1" : "zhangsan"
}
最终系统在后台根据这些设计拼接成为如下语句:
select o from tableName o where o.name='zhangsan'
系统中有一些默认参数,对这些默认参数,系统会自动赋值。
默认参数 | 含义 |
---|---|
person | 当前人 |
identityList | 当前人身份列表 |
unitList | 当前人所在直接组织 |
unitAllList | 当前人所在所有组织 |
groupList | 当前人所在群组 |
roleList | 当前人拥有的角色 |
如有如下语句:
select o from Task o where o.person = :person
参数:person
为当前人,
在v8.0之前,外部传入参数 {person: ""}即可;
在v8.0之后,系统将自动解析这些默认参数,不需要再传入。
如当前人是张三@zhangsan@P
,系统解析后自动拼接如下:
select o from Task o where o.person = "张三@zhangsan@P"
在sql中,日期格式使用文本即可,如 :"2019-12-31", "23:59:59", "2020-01-03 13:59:59"。
在jpql中,对日期格式有特殊的写法,格式如下:
Date - {d 'yyyy-mm-dd'} - for example: {d '2019-12-31'}
Time - {t 'hh:mm:ss'} - for example: {t '23:59:59'}
Timestamp(DateTime) - {ts 'yyyy-mm-dd hh:mm:ss'} - for example: {ts '2020-01-03 13:59:59'}
示例如下图:
如果运算符用的是 like,模糊查询,值为 "%{value}%"。