1.概述

自定义SQL功能是用户可以在线配置SQL,方便用户做数据查询,自定义SQL 有三种模式:

  1. 选择表或视图
  2. Freemarker Sql
  3. Groovy Sql

其中1直接配置就好了,2,3 是需要直接写SQL的,需要有些注意的点。下面就介绍一下两种模式的如何去写。

2.写法说明

2.1 FREEMARK SQL

freemark 意思就是这个SQL的语法支持FRAMRK的语法。

2.1.1 常量使用

常量是在后端计算的,比如 [USERID],在SQL执行之前的时候,会被先替换成 当前用户ID。

2.2.2 参数变量

在编写的时候SQL的时候,我们可以配置传入参数。

在编写SQL的时候,如果参数是ID_,那么可以如下写法。

select * from form_pc where 1=1
<#if  ID_?? >
 and ID_='${ID_}'
</#if>

2.2.3 上下文变量

平台提供了三个上下文常量,分别是 当前用户ID,当前部门ID,当前租户ID。

2.2 groovy sql

这个就是使用java代码来拼装SQL语句,可以方便用户构建复杂的SQL语句。

用于查询的SQL为

2.2.1 上下文变量

在这里有一个上下文变量,变量名 为 params ,这个变量是用来存储传过来的参数。

比如我们在条件字段定义。

在拼装时可以使用如下代码进行拼装。

  • 直接平装sql
import com.redxun.common.tool.StringUtils;
String sql="select * from form_pc where 1=1 ";
if(StringUtils.isNotEmpty(params.ID_)){
    sql+=" and ID_='"+params.ID_+ "'";
}
return sql;
  • 使用参数化方式拼装
import com.redxun.common.tool.StringUtils;
String sql="select * from form_pc where 1=1 ";
if(StringUtils.isNotEmpty(params.ID_)){
    sql+=" and ID_=#{w.ID_}";
}
return sql;

参数写法 : w.参数
这种拼装方式,安全,并且执行效率高。

在编写SQL的时候,可以参考下面的文档。

http://doc.redxun.cn/docs/jpaas/utilTool

2.2.2 常量使用

常量是在后端计算的,比如 [USERID],在SQL执行之前的时候,会被先替换成 当前用户ID。

文档更新时间: 2021-08-31 10:27   作者:zyg