本文为您介绍查询类型和操作类型的脚本编辑说明。
Get/List(查询类型)
支持的查询模式:
支持同一数据源下的单表查询、多表关联查询(Join)和嵌套查询(子查询)。
支持高级SQL模式(MyBatis风格)。
支持在Select区域配置参数,例如:
SELECT id_card, SUM(CASE WHEN id_card LIKE ${id_card} THEN 1 ELSE 0 END) AS proj_score FROM table WHERE c LIKE ${id_card} GROUP BY id_card。
不支持的语法与用法:
多条SQL查询语句:不支持在单个API中执行多条SQL(如:
SELECT ...; SELECT ...;)。非DQL语句:在List和Get操作类型API中,不支持INSERT、UPDATE、CREATE和DELETE等非DQL语法。
SELECT *:不支持
SELECT *查询,查询时必须明确指定查询的列。列名前缀:若列名带表前缀(例如:t.name),必须使用别名作为返回参数名
SELECT t.name AS name FROM table。聚合函数:使用
SUM()、COUNT()、MAX()、MIN()等聚合函数时,必须使用别名作为返回参数名。例如:SELECT SUM(num) AS total_num FROM table。分页语句:不支持在SQL中使用分页语句,需通过分页参数实现分页。
说明当数据源为SAP HANA,需要在SQL中使用分页语句,定义分页参数实现分页。
当数据源为TDengine,需要在SQL中使用分页语句,若不传入分页参数(即PageStart、PageSize),则返回全量数据;若传入分页参数,则根据定义的分页参数返回数据。
动态字段查询(高级SQL模式),支持通过参数动态指定返回字段,并将参数写在查询语句内。
参数格式:必须以var_cols开头,格式为:var_cols_xxx(如var_col_args),如
SELECT id, ${var_cols_args} FROM table1。返回参数:返回参数中需要将所有可支持的动态查询的字段添加为返回参数。
调用API:调用API时,在动态参数中传入需要查询的字段即可,未传入的字段在返回结果中为null值。例如:
var_col_args=name,age,dept。实际执行:SQL语句为:
SELECT id, name, age, dept FROM table1。
SQL模式为高级SQL时,在Mybatis SQL中,比较运算符需要用转义字符。
原符号
转义符号
<<>><=<=>=>=数据源特异性限制:
数据源
限制说明
TDengine
必须在SQL中使用
LIMIT/OFFSET实现分页。不支持可选参数。
SAP HANA
不支持分页,即传入PageStart、PageSize参数不生效。
不支持可选参数。
Elasticsearch
使用ScrollId实现分页查询。当不指定ScrollId时,最多只能查询前10000条数据,调用设置分页PageStart和PageSize时,请注意不要查询超过10000条数据,否则调用会失败。
例如:PageStart设置为9998,PageSize最大只能设置为2。
如果要查询10000条以后的数据,需要使用where语句指定scrollId,可以在API开发时指定一个请求参数scrollId,查询时传入对应的scrollId值。
说明指定了scrollId值查询时,就不能使用分页,即PageStart和PageSize不能传值,否则调用失败。
where语句中只支持scrollId字段作为条件查询,其余字段不生效。
例如:
select a from table where scrollId=${scrollId}。不支持子查询语句。
HBase
仅支持单条
rowkey查询,其中rowkey是必填的请求参数,查询语法为:select info1.id as name from table where rowkey = ${rowkey}不支持Order by排序语法。
不支持分页,即传入PageStart、PageSize参数不生效。
不支持Join语句。
PostgreSQL
不支持跨Schema查询,仅限当前连接的Schema查询数据。
Impala
不支持高级SQL模式(MyBatis风格)。
Lindorm
不支持
JOIN语句。
Create/Update/Delete(操作类型)
支持的SQL模式:
基础SQL模式:支持标准
INSERT、UPDATE、DELETE语句,使用${param}占位符传参,适用于简单场景。高级SQL模式(MyBatis 风格):可用于条件判断、动态字段、批量操作等复杂逻辑,支持的标签如下:
<if>、<choose>、<when>、<otherwise>、<trim>、<foreach>
高级SQL模式且是批量处理时,每条数据会单独执行,性能较差。因此在批量增删改接口中,请尽量避免使用高级模式。
若SQL中包含
in条件参数,则每条数据会单独执行,性能较差。请尽量避免使用in条件参数。仅PostgreSQL支持RETURNING语法。