1
40EaE5uJO3Xt1VVa 2021-12-05 19:31:28 +08:00
自己写一个 。我也觉得 GROM 老不爽了。
|
2
freakxx 2021-12-05 19:39:14 +08:00 3
|
3
INCerry 2021-12-05 19:42:56 +08:00
go 不是银弹 写比上层代码还是换个语言吧
|
4
hingbong 2021-12-05 19:43:42 +08:00
https://github.com/go-gorm/gen
这个能靠近一点 jooq 吧 |
5
wellsc 2021-12-05 20:00:15 +08:00
小而丑实现优雅的 orm 不太容易
|
6
wweir 2021-12-05 20:02:33 +08:00
用的 didi 的 query 生成器。简单 SQL 生成得很爽,复杂 SQL 手动来更方便
|
7
to2false 2021-12-05 20:04:46 +08:00
gorm+gen 、ent 感觉都不错
|
9
yl20181003 2021-12-05 21:38:30 +08:00
ent 不错
|
10
FightPig 2021-12-05 21:46:41 +08:00 2
一直写 rails 的人,被 ar 惯坏了,觉得哪个都不方便
|
11
w3cll 2021-12-05 22:09:10 +08:00
laravel 吧
|
12
Hanggi 2021-12-05 23:08:34 +08:00 1
其实都挺好用的,主要还是先入为主。
|
13
Buges 2021-12-05 23:22:35 +08:00 via Android 3
语言的问题。没有好用的语言,不可能写出好用的库。
|
14
chengxiao 2021-12-06 09:23:42 +08:00
之前都在说没有泛型,ORM 是这样难用的 blabla
现在有泛型了,看看哪个会变好用 |
15
waising 2021-12-06 09:34:01 +08:00
ent 应该还可以 不过我用的 squirrel + sqlx 也没啥问题
|
16
masterclock 2021-12-06 09:40:03 +08:00
ent 基于代码生成
ent 用着麻烦的地方配合 goqu |
17
qW7bo2FbzbC0 2021-12-06 09:41:21 +08:00
sqlx 不错,我比较喜欢写 sql ,而不是生成
|
18
moliliang 2021-12-06 10:30:51 +08:00
用生成器还是可以的,orm 并不好用~~
|
19
lqs 2021-12-06 11:35:38 +08:00 1
|
20
mestrace 2021-12-06 11:37:41 +08:00
约定大于配置。之前团队使用代码生成,写好 SQL DDL 之后可以一键生成常用的 gorm 方法。
|
21
openp2p 2021-12-06 11:37:49 +08:00
以前写了很多年 C++,突然有个写.net 的同事问,公司的里的 C++项目没用 orm 的?觉得有点不可思议。后来写 golang 去了,也遇到有人问同样的问题。于是尝试了几个 golang orm ,发现还是手动挡 sql 舒服。所以,存在即合理,总有人喜欢手动挡,有人喜欢自动挡。买菜喜欢自动,赛车喜欢手动
|
22
cloverzrg2 2021-12-06 11:43:58 +08:00
@hjahgdthab750 #17 容易一不小心就被注入,每次写 prepare 也麻烦
|
23
HanMeiM 2021-12-06 11:48:05 +08:00
ent 和 jooq 其实挺像的。
|
24
qW7bo2FbzbC0 2021-12-06 11:50:07 +08:00
@cloverzrg2 #22 我是 fmt.Sprintf()生成最终语句,不 prepare ,至于注入,如果是面向外部用户的话,的确要注意
|
25
momowei 2021-12-06 11:53:35 +08:00
gorm 也还好,怎么这么多吐槽的
|
26
keepeye 2021-12-06 11:58:25 +08:00
go 既不可能变成动态语言,也不可能变成另一个 java ,取舍一下吧
|
27
Hanggi 2021-12-06 12:18:12 +08:00 1
总有一些喜欢用记事本写代码的人喊用 IDE 的人都是菜鸟,代码就得纯手写才舒服。
整的好像用 ORM 的人都看不懂也不会写 SQL 似的。 项目上点 Star 的那几万人也不可能都傻,肯定是满足了自身需求才用的,觉得不好用就换一个就好了。 |
28
gowk 2021-12-06 12:49:38 +08:00 5
一直写 .net 的人,被 ef/dapper 惯坏了,觉得哪个都不方便
|
29
zjsxwc 2021-12-06 12:59:24 +08:00
gorm 总比手动 sql 好吧
|
30
Linvas 2021-12-06 14:04:54 +08:00
|
31
duanquanyong 2021-12-06 17:05:45 +08:00
强裂推荐 sqlc ( https://github.com/kyleconroy/sqlc )
支持各种 migration 工具格式文件,手写 sql quer 文件,生成 go 代码和 Repostiory 接口 |
32
waltcow 2021-12-06 17:17:38 +08:00 1
|
33
matrix1010 2021-12-06 17:22:00 +08:00
对于天天写 CRUD 的兄弟们我只推荐 Ent ,真正的生产力工具。现在 v0.9.1 Custom Template 可扩展的地方更多了,定制化需求也能够满足。个人观点 Go web 开发只有配合代码生成才具有生产力。另外对于写 CRUD 还写测试的兄弟们可以试试我的 factory 轮子: https://github.com/Yiling-J/carrier, 类 factory_bot/boy 自动生成测试数据
|
34
weichengwu 2021-12-06 17:31:39 +08:00
@lqs #19 我孤陋寡闻了,第一次见到点号写在行末的风格,感觉好奇怪
|
35
branchWater 2021-12-06 17:40:44 +08:00
@weichengwu java 不也是这种风格吗?函数太长了也得换行
|
36
Hanggi 2021-12-06 17:43:20 +08:00 via iPhone
|
37
branchWater 2021-12-06 17:52:20 +08:00
@Hanggi java 的点号放到行首和行末也都行啊,奇怪的在什么地方
|
38
cmdOptionKana 2021-12-06 18:07:55 +08:00
ent 还不好用?
|
39
justsosososo 2021-12-07 10:17:42 +08:00
|
40
sciel 2021-12-09 13:33:42 +08:00
用 goframe 吧
``` func (m *roleMenu) List(page int, size int, id string, rid string, mid string) (int, gdb.List) { db := g.DB().Model(dao.RoleMenu.Table + " t1"). LeftJoin(dao.Role.Table + " t2 on t1.rid = t2.id"). LeftJoin(dao.Menu.Table + " t3 on t1.mid = t3.id") if id != "" { db = db.Where("t1.id", id) } if rid != "" { db = db.Where("t1.rid", rid) } if mid != "" { db = db.Where("t1.mid", mid) } count, _ := db.Count() db.Fields("t2.name r_name,t3.name m_name,t1.id id") all, _ := db.Limit(size).Offset((page - 1) * size).Order("t1.id desc").All() if all.IsEmpty() { return count, gdb.List{} } return count, all.List() } ``` |
41
yiplee 2022-04-28 00:40:38 +08:00
@duanquanyong #31 sqlc 的确不错,但是只适合固定的 sql ,遇到需要 dynamic query 的场景就蛋疼了。
|