GoSQLTemplate

简介

在 Go 语言环境中,管理多个 SQL 文件可能相当复杂。GoSQLTemplate 是一个工具,旨在简化和优化 SQL 文件的管理过程。

快速入门

初始化和获取 SQL 语句

通过以下示例,您可以快速了解如何使用 SQLTemplate 管理您的 SQL 模板:

  1. gosqltemplate.InitFromOS("../sql-templates/main.sql")
  2. var sql, err := gosqltemplate.Get("sqlId")

SQL 文件结构

项目的目录结构可能如下所示:

  1. ├── sql-templates
  2. ├── main.sql
  3. ├── posts.sql
  4. ├── users.sql

主要 SQL 文件 (main.sql)

  1. --@ users.sql
  2. --@ posts.sql

用户 SQL 文件 (users.sql)

  1. --# users.selectAll
  2. select * from users

帖子 SQL 文件 (posts.sql)

  1. --# posts.selectAll
  2. select * from posts

获取 SQL 语句

初始化main.sql,可以通过 SQL ID 来获取特定的 SQL 语句:

  1. package services
  2. import (
  3. "fmt"
  4. "github.com/litongjava/gosqltemplate"
  5. "testing"
  6. )
  7. func TestGetUserSql(t *testing.T) {
  8. err := gosqltemplate.InitFromOS("../sql-templates/main.sql")
  9. if err != nil {
  10. panic(err)
  11. }
  12. postSelectAll, err := gosqltemplate.Get("posts.selectAll")
  13. if err != nil {
  14. panic(err)
  15. }
  16. fmt.Println(postSelectAll)
  17. }

常用指令

  • --# {sqlId}:定义一个 SQL ID,注意,ID 命名中间使用空格分割。
  • --@ {file.sql}:导入其他 SQL 文件,注意,文件名中间使用空格分割。

support for embed.FS

embedfs.go

  1. import "embed"
  2. //go:embed sql-templates/*
  3. var SqlFiles embed.FS

main.go

  1. err := gosqltemplate.InitFromEmbedFS(SqlFiles, "sql-templates/main.sql")
  2. if err != nil {
  3. panic(err)
  4. }