GoFrame?ORM原生方法操作示例
前言
最近一直在用GoFrame(下文簡(jiǎn)稱(chēng)gf)來(lái)開(kāi)發(fā)項(xiàng)目,在熟悉業(yè)務(wù)邏輯之后就是馬不停蹄的擼代碼了。
之前整理過(guò)結(jié)構(gòu)體和json轉(zhuǎn)換的文章:GoFrame必知必會(huì)之Scan:類(lèi)型轉(zhuǎn)換,今天整理同樣比較重要的ORM相關(guān)的文章。
gf是支持ORM原生操作的,在ORM鏈?zhǔn)讲僮鲌?zhí)行不了太過(guò)于復(fù)雜的SQL操作時(shí),可以交給方法操作來(lái)處理。
這篇文章整理原生操作的常用方法,下篇文章根據(jù)整理的原生方法整理對(duì)應(yīng)的開(kāi)箱體驗(yàn)。
常用方法
SQL操作方法,返回原生的標(biāo)準(zhǔn)庫(kù)sql對(duì)象
- Query是原始的數(shù)據(jù)查詢(xún)方法,返回的是原生的標(biāo)準(zhǔn)庫(kù)的結(jié)果集對(duì)象,需要自行解析。
- Exec方法用于寫(xiě)入/更新的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)
數(shù)據(jù)表記錄查詢(xún):
- 查詢(xún)單條記錄、查詢(xún)多條記錄、獲取記錄對(duì)象、查詢(xún)單個(gè)字段值(鏈?zhǔn)讲僮魍?
- 在執(zhí)行數(shù)據(jù)查詢(xún)時(shí)推薦使用Get*系列查詢(xún)方法。
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
數(shù)據(jù)單條操作
Insert/Replace/Save方法中的data參數(shù)支持的數(shù)據(jù)類(lèi)型為:
string/map/slice/struct/*struct,當(dāng)傳遞為slice類(lèi)型時(shí),自動(dòng)識(shí)別為批量操作,此時(shí)batch參數(shù)有效。
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確實(shí)非常方便。至今記得自己用gorm1.1版本時(shí),困頓于批量插入無(wú)法自拔:# Go GORM是時(shí)候升級(jí)新版本了 2.0新特性介紹
數(shù)據(jù)修改/刪除
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)
總結(jié)
雖然GoFrame的ORM鏈?zhǔn)讲僮鞣浅:?jiǎn)單且強(qiáng)大,但是業(yè)務(wù)中總還是有一些邏輯需要使用原生方法實(shí)現(xiàn),化繁為簡(jiǎn)。
以上就是GoFrame ORM原生方法操作示例的詳細(xì)內(nèi)容,更多關(guān)于GoFrame ORM原生方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- GoFrame框架使用避坑指南和實(shí)踐干貨
- GoFrame?gmap遍歷hashmap?listmap?treemap使用技巧
- GoFrame?gredis配置文件及配置方法對(duì)比
- 適合PHP同學(xué)的GoFrame框架使用體驗(yàn)及學(xué)習(xí)建議
- GoFrame 框架緩存查詢(xún)結(jié)果的示例詳解
- GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例
- GoFrame框架Scan類(lèi)型轉(zhuǎn)換實(shí)例
- GoFrame通用類(lèi)型變量gvar與interface基本使用對(duì)比
- GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象校驗(yàn)結(jié)構(gòu)體
- GoLang編程必備:GoFrame?GoLand插件介紹
相關(guān)文章
GO中高效的將int轉(zhuǎn)換為string的方法與源碼
本文將從逐步介紹幾種在?Go?中將?int?轉(zhuǎn)換為?string?的常見(jiàn)方法,并重點(diǎn)剖析這幾種方法在性能上的特點(diǎn),另外,還會(huì)重點(diǎn)介紹?FormatInt?高效的算法實(shí)現(xiàn),需要的朋友可以參考下2024-01-01go語(yǔ)言基礎(chǔ) seek光標(biāo)位置os包的使用
這篇文章主要介紹了go語(yǔ)言基礎(chǔ) seek光標(biāo)位置os包的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05Golang實(shí)現(xiàn)常見(jiàn)的限流算法的示例代碼
限流是項(xiàng)目中經(jīng)常需要使用到的一種工具,一般用于限制用戶(hù)的請(qǐng)求的頻率,也可以避免瞬間流量過(guò)大導(dǎo)致系統(tǒng)崩潰,或者穩(wěn)定消息處理速率,本文主要介紹了使用Go實(shí)現(xiàn)常見(jiàn)的限流算法,希望對(duì)大家有所幫助2023-04-04go浮點(diǎn)數(shù)轉(zhuǎn)字符串保留小數(shù)點(diǎn)后N位的完美解決方法
這篇文章主要介紹了go浮點(diǎn)數(shù)轉(zhuǎn)字符串保留小數(shù)點(diǎn)后N位解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05詳解golang中bufio包的實(shí)現(xiàn)原理
這篇文章主要介紹了詳解golang中bufio包的實(shí)現(xiàn)原理,通過(guò)分析golang中bufio包的源碼,來(lái)了解為什么bufio能夠提高文件讀寫(xiě)的效率和速度2018-01-01go語(yǔ)言實(shí)現(xiàn)的memcache協(xié)議服務(wù)的方法
這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)的memcache協(xié)議服務(wù)的方法,實(shí)例分析了Go語(yǔ)言使用memcache的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03從Context到go設(shè)計(jì)理念輕松上手教程
這篇文章主要為大家介紹了從Context到go設(shè)計(jì)理念輕松上手教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09