日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

GoFrame?ORM原生方法操作示例_Golang

作者:王中陽Go ? 更新時間: 2022-08-03 編程語言

前言

最近一直在用GoFrame(下文簡稱gf)來開發項目,在熟悉業務邏輯之后就是馬不停蹄的擼代碼了。

之前整理過結構體和json轉換的文章:GoFrame必知必會之Scan:類型轉換,今天整理同樣比較重要的ORM相關的文章。

gf是支持ORM原生操作的,在ORM鏈式操作執行不了太過于復雜的SQL操作時,可以交給方法操作來處理。

這篇文章整理原生操作的常用方法,下篇文章根據整理的原生方法整理對應的開箱體驗。

常用方法

SQL操作方法,返回原生的標準庫sql對象

  • Query是原始的數據查詢方法,返回的是原生的標準庫的結果集對象,需要自行解析。
  • Exec方法用于寫入/更新的SQL的操作。
Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
Prepare(ctx context.Context, query string) (*sql.Stmt, error)

數據表記錄查詢:

  • 查詢單條記錄、查詢多條記錄、獲取記錄對象、查詢單個字段值(鏈式操作同理)
  • 在執行數據查詢時推薦使用Get*系列查詢方法。
GetAll(ctx context.Context, sql string, args ...interface{}) (Result, error)
GetOne(ctx context.Context, sql string, args ...interface{}) (Record, error)
GetValue(ctx context.Context, sql string, args ...interface{}) (Value, error)
GetArray(ctx context.Context, sql string, args ...interface{}) ([]Value, error)
GetCount(ctx context.Context, sql string, args ...interface{}) (int, error)
GetScan(ctx context.Context, objPointer interface{}, sql string, args ...interface{}) error

數據單條操作

Insert/Replace/Save方法中的data參數支持的數據類型為:

string/map/slice/struct/*struct,當傳遞為slice類型時,自動識別為批量操作,此時batch參數有效。

Insert(ctx context.Context, table string, data interface{}, batch...int) (sql.Result, error)
Replace(ctx context.Context, table string, data interface{}, batch...int) (sql.Result, error)
Save(ctx context.Context, table string, data interface{}, batch...int) (sql.Result, error)

在這里由衷的感嘆一句:gf確實非常方便。至今記得自己用gorm1.1版本時,困頓于批量插入無法自拔:# Go GORM是時候升級新版本了 2.0新特性介紹

數據修改/刪除

Update(ctx context.Context, table string, data interface{}, condition interface{}, args ...interface{}) (sql.Result, error)
Delete(ctx context.Context, table string, condition interface{}, args ...interface{}) (sql.Result, error)

總結

雖然GoFrame的ORM鏈式操作非常簡單且強大,但是業務中總還是有一些邏輯需要使用原生方法實現,化繁為簡。

原文鏈接:https://juejin.cn/post/7089980894525521957

欄目分類
最近更新