表达式

EZ使用 QLExpress作为默认的表达式解析工具,具体可以参考: QLExpress
列表表达式
类别 说明 demo
查询表达式 通过表达式查询数据库,组装List<Map>,供列表展示
首先通过 StringBuilder sql=new StringBuilder(); 组装一条SQL。
然后调用内置函数search ,返回数据即可。
表达式目前使用的是 QLExpress,只需要确保返回List<Map>格式的数据即可。
系统内置了很多常用的函数,满足日常开发的需要。
StringBuilder sql=new StringBuilder();
sql.append(" SELECT ID,NAME FROM T_USER tec WHERE  tec.IS_DEL = 0");
return search(sql);
总数表达式 1.默认自动组装: select count(1) from (查询表达式) a
2.count(1): 即可 系统会截取 "from " 之后的SQL片段执行count 3.固定值,select 10000
select 10000
排序表达式 排序表达式需要单独配置,会拼接在where语句之后 order by id desc
分组表达式 支持qlexpress group by xxx
排序数字表达式 用于列表快速排序功能
import java.lang.Math;
oldOrder=Integer.parseInt($("oldOrder"));
newOrder=Integer.parseInt($("displayOrder"));
if(newOrder>oldOrder){
    update("update table set DISPLAY_ORDER=DISPLAY_ORDER-1  where DISPLAY_ORDER>="+Math.min(newOrder,oldOrder)+" and DISPLAY_ORDER <="+Math.max(newOrder,oldOrder));
}else{
    update("update table set DISPLAY_ORDER=DISPLAY_ORDER+1  where DISPLAY_ORDER>="+Math.min(newOrder,oldOrder)+" and DISPLAY_ORDER <="+Math.max(newOrder,oldOrder));
}
cc=count("select count(1) from V_APPLET_AD where IS_DEL=0 ");
update("update table set DISPLAY_ORDER="+Math.min(newOrder,cc)+"  where   AD_ID=${orderId}");
表单表达式
类别 说明 demo
初始化表达式 通过表达式查询数据库,组装Map,其中KEY为表单字段NAME;,初始化表单字段
首先通过 StringBuilder sql=new StringBuilder(); 组装一条SQL。
然后调用内置函数select ,返回数据即可。
表达式目前使用的是 QLExpress,只需要确保返回Map格式的数据即可。
系统内置了很多常用的函数,满足日常开发的需要。 进入编辑表单,需要传递ID参数
StringBuilder sql=new StringBuilder();
sql.append(" SELECT ID,NAME FROM T_USER tec WHERE ID = ${ID}");
return SELECT(sql);
提交表达式 系统默认新增与更新使用同一个表达式,根据请求参数中是否有”ID“ 来做区分。
为了维护方便,内置了InsertParam类,用于组装SQL。
param.table("T_USER"); 设置表名
param.add("#{ID}"); 设置字段
系统在调用insertSimple内置函数时,会自动根据字段是否为空来组装SQL。
如需设置默认值:
param.add("#{ID,value=0}");
import top.ezadmin.plugins.express.jdbc.UpdateParam;
import top.ezadmin.plugins.express.jdbc.InsertParam;
import top.ezadmin.web.EzResult;
ID=$("ID");
if(isBlank("ID")){
    param=new InsertParam();
    param.table("T_USER");
    param.add("#{NAME}");
    id=insertSimple(param);
    return id;
}else{
    param=new UpdateParam();
    param.table("T_USER");
    param.add("#{NAME}");
    StringBuilder updateSql=new StringBuilder();
    updateSql.append(" where ID=#{ID} ");
    param.where(updateSql.toString());
    updateSimple(param);
    return ID;
}
删除表达式 /ezloud/form/doDelete-FORMNAME?ID=1 用于快速实现列表的删除 update from xxx set delete_flag=0 where id=${ID}
状态表达式 /ezloud/form/doStatus-FORMNAME?ID=1 用于快速实现列表的上下架或启用禁用 update from xxx set status=abs(AD_STATUS-1) where id=${ID}
内置函数
为了便于编写表达式,ezadmin内置了一些函数。主要是通过往ExpressRunner添加自定义function实现。
函数名 入参 出参 说明
select String(SQL) List<Map<String, Object>>
用于在表达式中执行查询sql操作。
除QLEXPRESS中的获取请求参数处理之外,还支持在sql中直接使用 ${userName}  #{userName} 获取并替换参数。
如:
StringBuilder sql=new StringBuilder();
sql.append("select user_id");
if(isNotBlank("userName")){
sql.append(",username")
}
sql.append(" from T_USER where 1=#{ID} ");
return search(sql);
update String(SQL) int
用于在表达式中执行更新sql操作。
update("update xxx set xxx");
insert String(SQL) int
用于在表达式中执行插入sql操作。
insert("insert into xxx");
insertSimple insertParam int
用于在表达式中执行插入sql操作。insertParam参数主要是为了动态 根据参数是否为空来自动判断是否 组装到SQL中
updateSimple updateParam int
用于在表达式中执行更新sql操作。insertParam参数主要是为了动态 根据参数是否为空来自动判断是否 组装到SQL中
search String(SQL) List<Map<String, Object>>
search函数内置了request,session中的参数,通过判断参数是否为空,来拼接where语句。
如果需要在表达式中使用请求参数,但是在where语句中不希望拼接字段,则可以配置type为hidden-nowhere ,或者jdbctype 为 BODY.
通过解析request中的参数自动拼接where语句。
入参需要至少包含一个where条件。如无,可以使用 where 1=1 。
$ Object[] objects Object
$("request"):获取当前request Map参数。
$("abc"):获取request里面的abc参数对应的String,并将'替换为'',\替换为\\。
$("abcd","true"):获取request里面的abcd_ARRAY参数对应的String[]。
$$ Object[] objects Object

$$("abc"):获取session里面的abc参数对应的String,并将'替换为'',\替换为\\。
主要用于数据权限,我们不能使用request里面的参数。
isNotBlank Object[] objects boolean
isNotBlank("abc"):判断request里面的abc参数对应的String 是否为blank
isNotBlank("abc","session"):判断session里面的abc参数对应的String 是否为blank
isNotBlank("abc","string"):判断第一个参数  是否不为blank
isBlank Object[] objects boolean
isBlank("abc"):判断request里面的abc参数对应的String 是否为blank
isBlank("abc","session"):判断session里面的abc参数对应的String 是否为blank
isBlank("abc","string"):判断第一个参数  是否为blank
unionall(先考虑一下业务是否合理) String(SQL) List<Map<String, Object>>
正常的search插件是直接在SQL最后面拼接where语句的。
但当SQL中存在union all时,拼接的where语句就会得不到想要的结果,遇到groupby时 会导致不能到两个。
unionall插件会给 每个子SQL语句分别拼接where, 最后汇总成一条sql。
出现这种情况,考虑一下业务是否合理,不建议一个列表呈现,存在SQL性能隐患。
spring String(SpringBean) spring bean
通过beanName获取spring的bean. 主要用于一些需要远程获取数据的场景。
spring("userService").add($("user_name"),$$("session_user_id"));
支持执行一些其他相关增删改查操作。比如平滑过渡复用老代码。
log String slf4j log
log("update xxx set xxx");
env topezadmin.config.key String
    全局变量插件
env("logo");
    能够获取topezadmin.config json里面的值,用于全局变量判断
split k1,k2 String[]
split("a,b,c",",");