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",","); |