sqlz - 极简 SQL 拼接库

2022-02-28 13:09:46 +08:00
roy2220  roy2220

https://github.com/go-tk/sqlz

2850 次点击
所在节点   Go 编程语言  Go 编程语言
14 条回复
liprais
liprais
2022-02-28 13:21:58 +08:00
直接拼字符串...永远不是好的选择
michaelbibby
michaelbibby
2022-02-28 14:00:52 +08:00
你这种情况用 goqu 似乎更理想: https://github.com/doug-martin/goqu
retanoj
retanoj
2022-02-28 14:04:45 +08:00
虽然看不太懂,但感觉挺好的
再解决一下 where in 场景,以及分表表名拼接,以及动态拼接查询字段的问题可能就更好了
Qseven
Qseven
2022-02-28 14:10:13 +08:00
个人觉得,将 sql 和业务代码混在一起,拼来拼去,挺恶心的~
flighter
flighter
2022-02-28 14:53:26 +08:00
sql 和业务耦合太糟糕了
roy2220
roy2220
2022-02-28 14:54:45 +08:00
@Qseven 理论上 sql 是持久化层的实现细节,而业务层独立于持久化层,在分层设计良好的情况下,sql 和业务代码不会混在一起
roy2220
roy2220
2022-02-28 15:12:11 +08:00
@michaelbibby 干的活本质相同,都是 sql 拼接,但是`goqu`粉饰了一下,假装自己不是 sql 拼接~😄
sky101001
sky101001
2022-02-28 17:18:39 +08:00
demo 有点让人难受
ryanking8215
ryanking8215
2022-03-01 09:56:01 +08:00
@Qseven @flighter @liprais 我来替楼主说 2 句,这是一个 sql builder ,类似的实现有很多。至于是不是和业务代码混在一起,取决于你怎么使用它。一般会遵从分层设计,在业务层之外设计 repo 层,或者 dao 层,使用该层去操作持久化数据。repo 或者 dao 层的实现,可以用 sql builder 或者 orm 等,不存在和业务的耦合。
qq1340691923
qq1340691923
2022-03-01 11:16:16 +08:00
我还是用 sqlbuild 吧
Morton996
Morton996
2022-03-01 15:46:49 +08:00
沃日,你们不知道有种东西是 plan cache 吗?这种硬拼接的 SQL ,每次数据库优化器都要解析一次,非常影响性能。
roy2220
roy2220
2022-03-01 16:40:21 +08:00
@Morton996 如果真是像你所说的“硬拼接”,首先该想到 sql 注入的问题,而不是性能问题 :)
Morton996
Morton996
2022-03-01 17:29:44 +08:00
@roy2220 点错按钮了。SQL 注入和性能问题不冲突吧?
roy2220
roy2220
2022-03-01 17:47:04 +08:00
@Morton996 是的,大可放心,我这库没有这样的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836889

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX