# 宏变量
- 宏变量使用大括号进行包裹( { }),中间为变量名,变量名仅可使用字母、数字
# 系统变量
引用当前系统中的变量,可用于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数据资源, 中间为已保存sq数据资源l的名称,如,可在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”。
变量替换后:
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'