数据集参数化语法

插值

${参数名}

插值-带默认值

${参数名!默认值}
${(参数名.属性名)!默认值}
如果对应的参数值没有填写,将会插入默认值

插值-默认空白

${参数名!}
${(参数名.属性名)!}
如果对应的参数值没有填写,将不会插入任何内容。

条件判断

<#if 条件></#if>
<#if 条件>...<#else>...</#if>
<#if 条件>...<#elseif 条件>...<#else>...</#if>
具体的条件格式参考下面的条件章节。

数组、集合遍历

<#list 参数名 as item>...${item}...</#list>
<#list 参数名 as item>...${item}...<#sep>分隔符</#sep></#list>

条件

参数名??
当用户填写了参数名对应的值时执行条件内容,可用于处理非必填参数。
参数名
当布尔型参数值为true时执行条件内容。
!参数名
当布尔型参数值为false时执行条件内容。
参数名 == "..."
参数名 != "..."
当字符串型参数值等于、不等于给定值时执行条件内容。
参数名 == ...
参数名 != ...
参数名 gt ...
参数名 gte ...
参数名 lt ...
参数名 lte ...
当数值型参数值等于、不等于、大于、大于等于、小于、小于等于给定值时执行条件内容。
条件1 || 条件2
条件1 && 条件2
!条件
条件组合:或、与、非。

SQL预编译参数语法

在SQL数据集中,可以使用
${pc(参数名)}
的预编译语法,避免SQL注入安全问题。
需要注意的是,对于字符串参数,在使用预编译语法时,不应再添加单引号:
'${pc(参数名)}'
示例:
SELECT NAME, VALUE FROM T_ANALYSIS WHERE NAME = ${pc(name)} AND VALUE >= ${pc(value)}
SELECT * FROM T_ANALYSIS WHERE NAME LIKE CONCAT('%', ${pc(keyword)})
pc表示precompile的缩写。

示例

SELECT NAME, VALUE FROM T_ANALYSIS
WHERE NAME = '${name}'
<#if 最小值??>
AND VALUE >= ${最小值}
<#else>
AND VALUE IS NOT NULL
</#if>
<#if 名称集合??>
AND NAME IN
(
  <#list 名称集合 as item> '${item}' <#sep>,</#sep></#list>
)
</#if>
<#if ascByName>
ORDER BY NAME ASC
</#if>
<#if limitCount??>
limit 0, ${limitCount}
</#if>
对应上述示例的数据集参数为:
名称 类型 必填 输入框类型
name 字符串 文本框
最小值 数值 文本框
名称集合 字符串 复选框、多选下拉框
ascByName 布尔值 单选框
limitCount 数值 文本框
参数化语句的解析底层采用了Freemarker,详细语法请参考其官方文档。
 
京ICP备18055183号-1
© 2018-2024 datagear.tech 北京溪歌科技有限公司
登录