【Golang】Go语言ORM框架快速上手,ORM操做Mysql数据库示例

【Golang】Go语言ORM框架快速上手,ORM操做Mysql数据库示例

直接上Github https://github.com/JabinGP/demo-gomysql

说明

代码有master和gorm两个分支,master分支用的是xorm,gorm不言而喻。mysql

两个分支都是简单的单表查询,比较便于理解学习框架。git

两个分支都是只须要补齐mysql的配置文件,提早建好对应库,不须要建表就能够直接跑起来的,便于快速看到效果,具体的启动方式在README中有解释。github

使用感觉

具体的就很少说了,都在代码里面,也有详细的注释,主要讲讲体验。

若是你没有决定用哪一个,信我就选xormsql

单表

两个框架大同小异,可是我的感受xorm的文档,以及api的逻辑性上比较顺应个人想法(大概就是我猜它会怎么去暴露api给我用,而后用了以后发现确实是这样的)。数据库

Gorm有几点我以为不太好用:api

  1. 为了实现软删除,Gorm自带一个model,官方推荐组合使用struct,可是实际上使用了这个之后,结构体字面量就没法直接指定id了。。{ID:xxx}会报语法错误,若是要嵌套使用{{ID:xx}}就会爆参数不完整的错误,这样在使用结构体指定字段查询的时候不能直接指定id就很是麻烦,必须先初始化一个结构体,在xxx.ID=xxx指定。
  2. select找不到记录的时候居然返回了err,这个我以为不太合理,找不到值怎么能是错误呢。

多表

Gorm

Gorm在个人一个简易demoiris项目实战简易聊天室中使用到,
其中Gorm在另外一个简单的demo中尝试使用,Gorm在项目中用到级联查询的时候很是难受,翻看了不少遍官方文档,官方文档在这一块说得不是很清楚,也没有什么示例,最后是本身不断尝试组合实现的。框架

Xorm

因为尚未使用过Xorm作项目,只是写了简单的单表示例,Xorm彷佛也支持级联查询,但我更看重的是Xorm在文档中提供了直接执行SQL的方法,我更倾向于使用原生SQL加传入结构体指针扫描的形式完成级联查询,接下来打算将iris项目实战简易聊天室用xorm重构,看看效果后再对本文进行更新,不过我的感受xorm应该是会更好用的。学习

相关文章
相关标签/搜索