SQL 模板复用技巧

Rabbit SQL 支持两种形式的模板声明方式。多数情况下,模板用于提取相同查询条件,达到多段 SQL 复用的效果。但这些片段往往不是完整 SQL,在 IDE 中可能产生高亮或格式化异常。

因此,推荐使用内联模板声明方式,语法格式为:

-- //TEMPLATE-BEGIN:myCnd
...
-- //TEMPLATE-END

myCnd 是这段模板的名称,可在同一文件内直接引用。

如果安装有 IDEA 插件,通过输入 xql:new-inline-template 自动完成。

例如,一个 SQL 对象中可以定义多个模板片段(不支持嵌套):

/*[queryUsers]*/
select * from user t
where 
  t.enable = true
  and
  -- //TEMPLATE-BEGIN:queryUsersFilter
   t.type = '0'
  and((t.type = '1' and t.name ~ 'a')
  or (t.type = '2' and t.name ~ 'b')
  or (t.type = '3' and t.name ~ 'c')
  )
  -- //TEMPLATE-END
  and
  -- //TEMPLATE-BEGIN:queryUserCnd
   t.age > :age
  and t.address = :address
  -- //TEMPLATE-END
  order by dt desc;

上面的例子有几点值得注意:

通过 IDEA 插件,可以直接查看模板的合并效果,如下图:

多个模板引用时,使用条件连接符可以避免语法高亮错误。

模板片段内仍然可以使用动态 SQL脚本。两者是相互独立的逻辑,合理使用可以让整个 SQL 更清晰直观。