我是一个Go语言新手,现在的orm也比较多 我本身是使用的beego做开发的 但是听大家说都基本用的是gorm 所以我想找用过的人对比下这两个 并且说下你们一般开发的时候是怎么去使用orm 已经有哪些需要注意的地方 谢谢大佬们
有疑问加站长微信联系(非本文作者)

我是一个Go语言新手,现在的orm也比较多 我本身是使用的beego做开发的 但是听大家说都基本用的是gorm 所以我想找用过的人对比下这两个 并且说下你们一般开发的时候是怎么去使用orm 已经有哪些需要注意的地方 谢谢大佬们
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
用了gin和echo,beego没用过,听说自带的orm很一般.gorm和xorm都可以,按照文档来就行了
gorm 一般复杂的查询你们一般怎么做的
不用orm...
sqlx
beego支持mariadb吗?
直接Raw("xxxxx")或者Table("xxx").Select("xxxxx").Joins("xxxxxx").Where("xxxxxx") 这样的
mariaDB和mysql有啥区别么
全部原生sql 撸嘛
不清楚哦 应该支持吧 他和mysql 连接应该是一样的
这个我知道 貌似有点麻烦的
我只知道前者开源 后者是甲骨文在维护的
@kuaidjun 自己写了个querybuilder,和一个根据sql结构生成go代码的代码生成器...
现在是不是应该弃用ORM了?
之前python 项目用的sqlalchemy,数据库切到mysql8.0时会报错,因为sqlalchemy使用了mysql 的一些系统参数,这些参数在mysql8.0中弃用/改变了。需要升级sqlalchemy。使得程序对mysql 版本有了绑定依赖,升级数据库需要改程序。如果在代码里写纯 sql ,应该就不会遇到这个问题。
我觉得挺好的呀 简单的操作就用ORM去做 复杂的 ORM也提供的有自己写sql 的方式 我感觉挺好的
大佬 我是Go新手...
我觉得你可以先尝试下sql库。
对于轻量的使用比orm好用 多了。
个人觉得gorm浮肿。关系模型用对象模型来整,更麻烦。
go 的设计需要连每个error都要处理,你还不肯多写sql查询和映射嘛。用原生的吧
gorm.Model 是侵入性设计
xorm 有很多bug 比如id 更新零值 不如原生的sqlx 顶多把insert包装一下
对于有复杂sql的情况sqlx 是个不错的选择
复杂sql也可以gorm:
db.Raw()或db.Exec()
Exec 正确 Update 错误
Gorm
用beego框架的话 就用beego的 orm呗
都能满足你的需求 既然用了beego框架 就索性都用呗
我也支持原汤化原食,既然用beego了 就用他自己的orm
ent
gorm 无法区分值 0 , 和未填值的 0, "未用到的字段, 就不产生JSON key" 无效 , 或者说这是 go 的问题
狗都不用gorm
2楼 @misitebao 简单的查询 ,用orm好用 ,复杂点,就痛苦了,建议用原生 sql,自由
beego的ORM和Gorm都挺优秀的
在开发过程中注意两个工具的一些坑要避开,比如gorm的零值、主键非整形子增长等等
使用起来,两个都差不多,各有各的特色。
如果采用了Beego框架,那我建议你全部采用它的东西会更容易些,毕竟都整合好了。
如果自己搭架子,推荐gorm或者xorm,比如Gin、Gorm、gocron(用于定时任务处理)、logrus(日志记录)、redigo(redis缓存)