当年使用 Java 编写 Web 应用的时候,用 MyBatis 查数据,那叫一个爽,轻量、灵活、自由,后来转到 Go,也用过 GORM,但总怀念 MyBatis,所以也想有这样的框架。
Github 上翻了几翻,发现也有一些,大概分为两类:
A、依然通过 XML 定义查询,甚至有 完全兼容的 Java MyBatis 的,然后通过一个库支持查询和绑定;
B、定义一个接口,在接口上写注释,通过 go:generate 生成代码
其他还有把 sql 语句写在 struct tags 里面的,都和上面两种大同小异。
想问一下:
1. Go 是否需要一个类似 MyBatis 的框架?
2. 如果需要,该设计成什么样呢,类A还是类B?
3. 是否有人愿意协作开发?
“go没那么依赖sql或者类似的数据库。 ” 但还是服务还是得有存储,SQL 是少不了的。
MyBatis 两个好处:
1. 支持完整的原生 SQL 语句。Builder 框架只是部分,而且 join 等操作不直观。如果非要说哪门语言最好应用最广泛,我投 SQL 语言。SQL 是真正的 第四代语言,而 Go 等程序设计语言是第三代,Query Builder 等框架号称面向对象查询,但实际使用的时候,还是通过人脑把 SQL 语句转成 Builder 操作,执行的时候又转成 SQL 语句,这个过程做了无用功,更重要的是增加了大脑的负担,尤其是复杂的 SQL 语句,如 join、count、group by 等,唯一好处就是少写了几行代码,得不偿失,别人看起来也费劲。所以还是原生 SQL 好,通用,简洁,易懂。
2. 自动绑定,大多框架都是支持的。
#6
更多评论
我自己写query builder, 各种开源的query builder也很多
go没那么依赖sql或者类似的数据库。
如果java更适合你的业务,还是用java比较好。
#1