91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

超好用的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

兴隆县| 定安县| 黔东| 旅游| 卓资县| 吉木萨尔县| 兴海县| 宜宾县| 绥化市| 康乐县| 盱眙县| 会理县| 化隆| 华池县| 云和县| 金川县| 朝阳区| 泽州县| 涟水县| 太和县| 遂昌县| 怀柔区| 台东市| 马关县| 隆子县| 昆明市| 山东省| 启东市| 个旧市| 荆州市| 南涧| 浦县| 准格尔旗| 天祝| 南皮县| 陆川县| 太仓市| 蓬安县| 冀州市| 望奎县| 罗定市|