交互变量
2025年1月21日大约 2 分钟
交互变量
- 交互变量使用大括号进行包裹
{ }
,中间为变量名,变量名仅可使用字母、数字
系统变量
引用当前系统中的变量,可用于sql中的任意位置。
可用系统变量:
#{user.id} 当前登录用户id #{user.name} 当前登录用户名 #{user.account} 当前登录用户登录账号 #{user.phone} 当前登录用户手机号 #{user.email} 当前登录用户邮箱 #{user.groupName} 当前登录用户组名称
示例
- sql:
select * from tdp_sys_account where phone = #{user.phone}
- 代码执行时会把当前sql替换为:
select * from tdp_sys_account where phone = "当前登录用户手机号"
提示:
注: 如使用的系统变量为用户组
- = #{user.groupName} ,执行时,替换为 = '用户组1,用户组2'
- in (#{user.groupName}),执行时,替换为 in ('用户组1','用户组2')
查询参数变量
变量名标记, 如 #{selectYear}。 用于where筛选语句中,查询参数通过页面交互进行传递 。如果无值,会移除该条查询条件
示例
存在参数name,当前值为 "名称"
sql:
SELECT * FROM HT_ALARM_CONCAT_GROUP WHERE GROUP_NAME = #{name}
代码执行时会把当前sql替换为:
SELECT * FROM HT_ALARM_CONCAT_GROUP WHERE GROUP_NAME = '名称'
其它使用场景
存在参数param,当前值为"测试" 查询参数条件为 LIKE 模糊查询: 模糊查询可指定匹配方式,例如: like #{%param} 左模糊查询 ,执行时,替换为 like '%测试' like #{param%} 右模糊查询,执行时,替换为 like '测试%' like #{%param%} 全模糊查询,执行时,替换为 like '%测试%' 存在参数list,当前值为"测试1,测试2" 查询参数条件为IN、NOT IN:字符串数组的数据通过半角逗号(,)分隔拼接为字符串 例如: in (#{list}),执行时,替换为 in(测试1,测试2)
sql片段
引用已保存的sql数据资源, 中间为已保存SQL数据资源的名称,如
{{sqlcode}}
,可在from 或join关联语句中引用已保存的sql。示例
- 存在名称为 "数据资源"的sql数据资源,数据资源内容为:"select * from tdp_sys_account"。
- 如下sql:
select * from {{数据资源}} a
代码执行时会把当前sql替换为:
select a.* from (select * from tdp_sys_account) a
示例
标记①:sql语句
SELECT A.* from {{area}} A JOIN TDP_SYS_AREA B ON A.ID = B.PARENT_ID WHERE A.AREA_LEVEL in (#{areaLevel}) and A.AREA_NAME LIKE #{%areaName%} and A.AREA_TYPE = #{areaType} and A.ID = #{user.id}
标记②:参数列表配置有: areaName = 北京,areaType=省,areaLevel=3,2,1。
存在sql数据资源名称为“area”的资源。资源内容为“SELECT * FROM TDP_SYS_AREA”。
标记③:sql执行时变量替换为:
SELECT A.* FROM (SELECT * FROM TDP_SYS_AREA) AS A INNER JOIN TDP_SYS_AREA AS B ON A.ID = B.PARENT_ID WHERE A.AREA_LEVEL IN ('3', '2', '1') AND A.AREA_NAME LIKE '%北京%' AND A.AREA_TYPE = '省' AND A.ID = 'UJc9f3cc83c77b430dbd35b1867bc85d'
