停止在 Go 源文件中编写 SQL 代码!
2022/11/8 1:24:03
本文主要是介绍停止在 Go 源文件中编写 SQL 代码!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
你正在写 Go,但你需要写一些 SQL,所以你最终在你的 Go 源代码中编写 SQL,只要它们是短查询,这不是问题,但是当你的查询占用更多的代码行时,它们变得难以阅读和修改,除了缺乏缩进和代码着色使情况变得更糟。
所以。。。解决方案是什么?
将 SQL 代码保留为 SQL,将 Go 代码保留为 Go(不要在 Go 中编写 SQL)。
为此,您可以使用sqload!
File users.sql
-- query: FindUserById SELECT first_name, last_name, dob, email FROM user WHERE id = :id; -- query: UpdateFirstNameById UPDATE user SET first_name = :first_name WHERE id = :id; -- query: DeleteUserById DELETE FROM user WHERE id = :id;
File main.go
package main import ( _ "embed" "fmt" "github.com/midir99/sqload" ) //go:embed users.sql var sqlCode string var Q = sqload.MustLoadFromString[struct { FindUserById string `query:"FindUserById"` UpdateFirstNameById string `query:"UpdateFirstNameById"` DeleteUserById string `query:"DeleteUserById"` }](sqlCode) func main() { fmt.Printf("- FindUserById\n%s\n\n", Q.FindUserById) fmt.Printf("- UpdateFirstNameById\n%s\n\n", Q.UpdateFirstNameById) fmt.Printf("- DeleteUserById\n%s\n\n", Q.DeleteUserById) }
通过将 SQL 和 Go 分开,您可以获得以下优势:
- IDE 或代码编辑器提供了更好的支持(因为您现在正在自己的文件中处理 SQL 代码及其扩展名.sql)。
- 您的 DBA 将能够轻松找到您的项目正在运行的每个查询的代码。
- SQL重用,只需将相同的.sql文件从一个项目复制到另一个项目即可。
- 保持你的 Go 代码没有 SQL 查询。
sqload是一个具有 100% 测试覆盖率的库,没有
来自第三方的依赖,他们的文档有很多例子。
sqload的灵感来自 Yesql(Clojure)。
这篇关于停止在 Go 源文件中编写 SQL 代码!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站