超好用的orm库gorm是怎样的

超好用的orm库gorm是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

九江网站建设公司创新互联,九江网站设计制作,有大型网站制作公司丰富经验。已为九江千余家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的九江做网站的公司定做!

实际上,为提高开发效率,一般都会使用一些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 设置一些额外的表属性

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

// 自动迁移模式db.AutoMigrate(&Product{})

查询

var product Productdb.First(&product, 1) // 查询id为1的productdb.First(&product, "code = ?", "ik01001") // 查询code为l1212的product

插入

// 创建db.Create(&Product{Code: "ik01001", Price: 1000})

构造已给对象,直接调用 db.Create() 就可以插入一条记录。不用拼接sql语句,是不是很方便。

更新

// 更新 - 更新product的price为2000db.Model(&product).Update("Price", 2000)

删除

简单对象删除:

db.Delete(&product)复杂条件的删除:if err := db.Where(&Product{ID: 1}).Delete(Product{}).Error; err != nil {  return err}

事务

func CreateProducts(db *gorm.DB) err {  tx := db.Begin()  // 注意,一旦你在一个事务中,使用tx作为数据库句柄
  if err := tx.Create(&Product{Code: "ik01003", Price: 3000}).Error; err != nil {    tx.Rollback()    return err  }
  tx.Commit()  return nil}

事务的处理也很简单,用 db.Begin() 声明开启事务,结束的时候调用 tx.Commit(),异常的时候调用 tx.Rollback()

看完上述内容,你们掌握超好用的orm库gorm是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


分享标题:超好用的orm库gorm是怎样的
URL标题:http://myzitong.com/article/joogie.html