介绍一个超好用的orm库gorm【Golang 入门系列十二】


本文摘自网络,作者,侵删。

之前在已经介绍了用的github.com/go-sql-driver/mysql 访问数据库,不太了解的可以看看之前的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html。


实际上,为提高开发效率,一般都会使用一些orm框架,把数据库层屏蔽,用户看到的只有对象而无需我们手动做一些转换,这样在使用的时候就非常方便。这种操作方式基本上已经成了标准做法。golang也有很多优秀的orm框架,今天就来介绍介绍gorm。


Gorm的功能

  • hook机制(Before/After Create/Save/Update/Delete/Find)

  • 对象关系Has One, Has Many, Belongs To, Many To Many, Polymorphism

  • 热加载

  • 支持原生sql操作

  • 事务性

  • 链式api

  • 支持的数据库有:mysql、postgre、sqlite、sqlserver

  • 查询操作

以上是gorm的功能,至于为什么是gorm?gorm 跟其他框架有什么不一样?这里就不在介绍了。直接讲用法吧。


库安装

go get -u github.com/jinzhu/gorm

数据库连接

db, err = gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/irisapp?charset=utf8&parseTime=True&loc=Local")if err != nil {   panic("连接数据库失败")}

连接比较简单,直接调用 gorm.Open 传入数据库地址即可。gorm支持基本上所有主流的关系数据库,只是连接方式上略有不同,这里我用的 mysql为例吧。

 

表定义

type Product struct {    ID        int    `gorm:"primary_key"`    Code      string `gorm:"type:varchar(20);"`    Price     int     `gorm:"type:int;"`    Name      string `gorm:"type:varchar(64);"`    Mail      string `gorm:"type:varchar(256);"`    CreatedAt time.Time}

 

创建表

if !db.HasTable(&Like{}) {    if err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8").CreateTable(&Product{}).Error; err != nil {      panic(err)    }}

直接通过 db.CreateTable 就可以创建表了,非常方便,还可以通过 db.Set 设置一些额外的表属性

另外,还有自动同步创建表的方法:

阅读剩余部分

相关阅读 >>

我为何从php 加入到 Go 的潮流

Golang文件复制

Go时间解析

Golang 原子操作

手撸Golang 基本数据结构与算法 归并排序

Golang 架构设计原则 单一职责原则

Go语言适合做哪些开发

Golang判断数据类型和获取数据类型

Golang与monGodb

Golang怎么debug

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...