中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

超好用的orm庫gorm是怎樣的

發布時間:2022-01-04 17:18:49 來源:億速云 閱讀:214 作者:柒染 欄目:大數據

超好用的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是怎樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

保靖县| 中山市| 东乌珠穆沁旗| 南召县| 沂南县| 丹棱县| 荔波县| 韶关市| 霍林郭勒市| 班玛县| 汉源县| 长春市| 苗栗县| 图们市| 红桥区| 崇仁县| 道孚县| 开原市| 惠来县| 金川县| 福海县| 佳木斯市| 湖北省| 株洲县| 玉溪市| 阿勒泰市| 顺义区| 汉沽区| 闻喜县| 新竹市| 克拉玛依市| 襄垣县| 商洛市| 海晏县| 竹山县| 宁海县| 化隆| 安徽省| 清苑县| 彭山县| 南和县|