BeetlSQL 默认是用Markdown格式来组织SQL文件,并且使用Beetl模板引擎来生成sql
开发者可以使用任何其他格式和喜欢的引擎来组织SQL,BeetlSQL提供插件机制。比如以xml来组织sql,sql使用freemaker模板语法等,本章只讨论Markdown文件的用法

文件格式

系统默认使用MarkdownClasspathLoader 来加载sql文件。 sql文件扩展名可以是md或者sql,推荐使用md作为扩展名。所有sql文件默认位于classpath的sql目录下。一个sql文件可以对应多个sql片段,如下是一个sql文件格式

  1. selectById
  2. ===
  3. select * from sys_user where id=#{id}
  4. update
  5. ===
  6. update sys_user set status=1 whre id=#{id}

使用===作为分隔
===上方是sql片段名称,片段名称和mapper接口中的方法名一致,切记名称后不要有空格或者任何不可见的符号
=== 下方是要执行的sql语句

markdown文件支持代码块来标识sql片段

  1. update
  2. ===
  3. ```sql
  4. update sys_user set status=1 whre id=#{id}
  5. ```sql

```sql 好处是有助于IDE或者其他工具能对sql进行高亮和语法校验

注释

可以在sql片段开始处使用 * 作为此sql片段的注释

  1. update
  2. ===
  3. * 我是一个注释...
  4. * 更新用户状态
  5. * 设置状态为1
  6. ```sql
  7. update sys_user set status=1 whre id=#{id}
  8. ```sql

允许在整个sql文件开头加上任意的注释

  1. 说明:用户操作文件,参考UserMapper
  2. select
  3. ===
  4. select * from sys_user where id=#{id}
  5. update
  6. ===
  7. * 更新用户状态
  8. * 设置状态为1
  9. ```sql
  10. update sys_user set status=1 whre id=#{id}
  11. ```sql

sql片段的复用

use函数

BeetlSQL3提供use函数,可以重用当前sql文件的sql片段,如下

  1. select
  2. ===
  3. select #{use("cols")} where sys_user
  4. cols
  5. ===
  6. id,name,department_id

globalUse

如果想引用其他sql文件的片段,则需要使用globalUse
BeetlSQL3提供use函数,可以重用当前sql文件的sql片段,如下

  1. select
  2. ===
  3. select #{globalUse("common.cols")} where sys_user

common.md包含了cols片段

  1. cols
  2. ===
  3. id,name,department_id

sql文件中还可以使用更多语法,参考beetl语法