亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

GoFrame框架ORM原生方法對(duì)象操作開箱體驗(yàn)

 更新時(shí)間:2022年06月10日 10:45:21   作者:王中陽Go  
這篇文章主要為大家介紹了GoFrame框架ORM原生方法對(duì)象操作的開箱體驗(yàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

最近一直在用GoFrame(下文簡(jiǎn)稱gf)來開發(fā)項(xiàng)目,在熟悉業(yè)務(wù)邏輯之后就是馬不停蹄的擼代碼了。

之前整理過結(jié)構(gòu)體和json轉(zhuǎn)換的文章:GoFrame必知必會(huì)之Scan:類型轉(zhuǎn)換,今天整理同樣比較重要的ORM相關(guān)的文章。

gf是支持ORM原生操作的,在ORM鏈?zhǔn)讲僮鲌?zhí)行不了太過于復(fù)雜的SQL操作時(shí),可以交給方法操作來處理。

上一篇文章 整理了ORM的原生方法,這篇文章根據(jù)整理的原生方法整理對(duì)應(yīng)的開箱體驗(yàn)。

開箱體驗(yàn)

1. ORM對(duì)象

// 獲取默認(rèn)配置的數(shù)據(jù)庫(kù)對(duì)象(配置名稱為"default")
db := g.DB()
// 獲取配置分組名稱為"user"的數(shù)據(jù)庫(kù)對(duì)象
db := g.DB("user")
// 使用原生單例管理方法獲取數(shù)據(jù)庫(kù)對(duì)象單例
db, err := gdb.Instance()
db, err := gdb.Instance("user")

tips

不用的時(shí)候不需要使用Close方法關(guān)閉數(shù)據(jù)庫(kù)連接,數(shù)據(jù)庫(kù)引擎底層采用了鏈接池設(shè)計(jì),當(dāng)鏈接不再使用時(shí)會(huì)自動(dòng)關(guān)閉

2. 數(shù)據(jù)寫入

r, err := db.Insert(ctx, "user", gdb.Map {
    "name": "王中陽",
})

3. 數(shù)據(jù)查詢(單條)

雖然limit 10,但是因?yàn)槲覀兪褂玫氖荊etOne,仍然只會(huì)返回單條數(shù)據(jù)

one, err := db.GetOne(ctx, "select * from user limit 10")
one, err := db.GetOne(ctx, "select * from user where id=100")
one, err := db.GetOne(ctx, "select * from user where id=?", 100)
one, err := db.GetOne(ctx, "select * from user where id=?", g.Slice{100})

4. 數(shù)據(jù)查詢(列表)

list, err := db.GetAll(ctx, "select * from user limit 10")
list, err := db.GetAll(ctx, "select * from user where age > ? and name like ?", g.Slice{20, "%金%"})
list, err := db.GetAll(ctx, "select * from user where status=?", g.Slice{1})

5. 數(shù)據(jù)保存

數(shù)據(jù)保存是Save,插入數(shù)據(jù)是insert,區(qū)別是是否指定主鍵

r, err := db.Save(ctx, "user", gdb.Map {
    "id"  :  1,
    "name" : "王中陽",
})

6. 批量操作

batch := 10
_, err := db.Insert(ctx, "user", gdb.List {
    {"name": "小明"},
    {"name": "小華"},
    {"name": "小軍"},
    {"name": "小高"},
}, batch)

tips

  • 其中batch參數(shù)用于指定批量操作中分批寫入條數(shù)數(shù)量(默認(rèn)是10)。
  • 表示批量寫入數(shù)據(jù)時(shí)的每批次數(shù)量,這個(gè)數(shù)值跟你數(shù)據(jù)庫(kù)服務(wù)器配置的SQL BufferSize數(shù)值有關(guān)。

7. 數(shù)據(jù)更新/刪除

// db.Update/db.Delete 同理
// UPDATE `user` SET `name`='王中陽' WHERE `id`=10000
r, err := db.Update(ctx, "user", gdb.Map {"name": "王中陽"}, "id=?", 10000)
// UPDATE `user` SET `name`='王中陽' WHERE `id`=10000
r, err := db.Update(ctx, "user", "name='王中陽'", "id=10000")
// UPDATE `user` SET `name`='王中陽' WHERE `id`=10000
r, err := db.Update(ctx, "user", "name=?", "id=?", "王中陽", 10000)

tips

參數(shù)建議使用?占位符進(jìn)行輸入,避免SQL注入風(fēng)險(xiǎn)。

總結(jié)

雖然GoFrame的ORM鏈?zhǔn)讲僮鞣浅:?jiǎn)單且強(qiáng)大,但是業(yè)務(wù)中總還是有一些邏輯需要使用原生方法實(shí)現(xiàn),化繁為簡(jiǎn)。

以上就是GoFrame框架ORM原生方法對(duì)象操作開箱體驗(yàn)的詳細(xì)內(nèi)容,更多關(guān)于GoFrame ORM原生方法對(duì)象操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深度剖析Golang如何實(shí)現(xiàn)GC掃描對(duì)象

    深度剖析Golang如何實(shí)現(xiàn)GC掃描對(duì)象

    這篇文章主要為大家詳細(xì)介紹了Golang是如何實(shí)現(xiàn)GC掃描對(duì)象的,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的小伙伴可以參考一下
    2023-03-03
  • Go中數(shù)組傳參的幾種方式小結(jié)

    Go中數(shù)組傳參的幾種方式小結(jié)

    本文主要介紹了Go中數(shù)組傳參的幾種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 一文帶你全面掌握Go語言中的正則表達(dá)式

    一文帶你全面掌握Go語言中的正則表達(dá)式

    正則表達(dá)式是一種強(qiáng)大的模式匹配工具,能夠在文本中進(jìn)行靈活的搜索和替換操作,本文將介紹?Golang?中的正則表達(dá)式語法,包括常用的匹配符號(hào)、模式修飾符以及示例應(yīng)用,希望對(duì)大家有所幫助
    2023-05-05
  • golang socket斷點(diǎn)續(xù)傳大文件的實(shí)現(xiàn)方法

    golang socket斷點(diǎn)續(xù)傳大文件的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇golang socket斷點(diǎn)續(xù)傳大文件的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 一文詳解Golang?定時(shí)任務(wù)庫(kù)?gron?設(shè)計(jì)和原理

    一文詳解Golang?定時(shí)任務(wù)庫(kù)?gron?設(shè)計(jì)和原理

    這篇文章主要介紹了一文詳解Golang?定時(shí)任務(wù)庫(kù)?gron?設(shè)計(jì)和原理,gron是一個(gè)比較小巧、靈活的定時(shí)任務(wù)庫(kù),可以執(zhí)行定時(shí)的、周期性的任務(wù)。gron提供簡(jiǎn)潔的、并發(fā)安全的接口
    2022-08-08
  • 使用Golang創(chuàng)建單獨(dú)的WebSocket會(huì)話

    使用Golang創(chuàng)建單獨(dú)的WebSocket會(huì)話

    WebSocket是一種在Web開發(fā)中非常常見的通信協(xié)議,它提供了雙向、持久的連接,適用于實(shí)時(shí)數(shù)據(jù)傳輸和實(shí)時(shí)通信場(chǎng)景,本文將介紹如何使用 Golang 創(chuàng)建單獨(dú)的 WebSocket 會(huì)話,包括建立連接、消息傳遞和關(guān)閉連接等操作,需要的朋友可以參考下
    2023-12-12
  • 一步步教你編寫可測(cè)試的Go語言代碼

    一步步教你編寫可測(cè)試的Go語言代碼

    相信每位編程開發(fā)者們應(yīng)該都知道,Golang作為一門標(biāo)榜工程化的語言,提供了非常簡(jiǎn)便、實(shí)用的編寫單元測(cè)試的能力。本文通過Golang源碼包中的用法,來學(xué)習(xí)在實(shí)際項(xiàng)目中如何編寫可測(cè)試的Go代碼。有需要的朋友們可以參考借鑒,下面跟著小編一起去學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • Go語言sync.Cond使用方法詳解

    Go語言sync.Cond使用方法詳解

    Go語言標(biāo)準(zhǔn)庫(kù)中還包含條件變量 sync.Cond,它可以讓一組 Goroutine 都在滿足特定條件時(shí)被喚醒,每一個(gè)sync.Cond結(jié)構(gòu)體在初始化時(shí)都需要傳入一個(gè)互斥鎖,接下來我們將通過文中例子了解它的使用方法,感興趣的同學(xué)跟著小編一起來看看吧
    2023-07-07
  • Go并發(fā)與鎖的兩種方式該如何提效詳解

    Go并發(fā)與鎖的兩種方式該如何提效詳解

    如果沒有鎖,在我們的項(xiàng)目中,可能會(huì)存在多個(gè)goroutine同時(shí)操作一個(gè)資源(臨界區(qū)),這種情況會(huì)發(fā)生競(jìng)態(tài)問題(數(shù)據(jù)競(jìng)態(tài)),下面這篇文章主要給大家介紹了關(guān)于Go并發(fā)與鎖的兩種方式該如何提效的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • go語言環(huán)境搭建簡(jiǎn)述

    go語言環(huán)境搭建簡(jiǎn)述

    本文簡(jiǎn)單記錄了下go語言環(huán)境的搭建流程,給小伙伴們一個(gè)參考,希望大家能夠喜歡。
    2015-01-01

最新評(píng)論