最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GoFrame框架ORM原生方法對象操作開箱體驗

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

前言

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

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

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

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

開箱體驗

1. ORM對象

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

tips

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

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

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

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

雖然limit 10,但是因為我們使用的是GetOne,仍然只會返回單條數(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ù)量(默認是10)。
  • 表示批量寫入數(shù)據(jù)時的每批次數(shù)量,這個數(shù)值跟你數(shù)據(jù)庫服務(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ù)建議使用?占位符進行輸入,避免SQL注入風(fēng)險。

總結(jié)

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

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

相關(guān)文章

  • 如何通過Golang的container/list實現(xiàn)LRU緩存算法

    如何通過Golang的container/list實現(xiàn)LRU緩存算法

    文章介紹了Go語言中container/list包實現(xiàn)的雙向鏈表,并探討了如何使用鏈表實現(xiàn)LRU緩存,LRU緩存通過維護一個雙向鏈表來管理數(shù)據(jù),確保在插入和刪除操作時能夠以O(shè)(1)的平均時間復(fù)雜度運行,提供了鏈表的操作和使用場景,并附帶了實現(xiàn)LRU緩存的代碼示例,感興趣的朋友一起看看吧
    2025-03-03
  • Go如何優(yōu)雅的使用字節(jié)池示例詳解

    Go如何優(yōu)雅的使用字節(jié)池示例詳解

    在編程開發(fā)中,我們經(jīng)常會需要頻繁創(chuàng)建和銷毀同類對象的情形,這樣的操作很可能會對性能造成影響,這時常用的優(yōu)化手段就是使用對象池(object pool),這篇文章主要給大家介紹了關(guān)于Go如何優(yōu)雅的使用字節(jié)池的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Go語言編程中字符串切割方法小結(jié)

    Go語言編程中字符串切割方法小結(jié)

    這篇文章主要介紹了Go語言編程中字符串切割方法小結(jié),所整理的方法都來自字符串相關(guān)的strings包,需要的朋友可以參考下
    2015-10-10
  • Golang導(dǎo)入包的幾種方式(點,別名與下劃線)

    Golang導(dǎo)入包的幾種方式(點,別名與下劃線)

    這篇文章主要介紹了Golang導(dǎo)入包的幾種方式(點,別名與下劃線),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Go語言接口的嵌套的具體使用

    Go語言接口的嵌套的具體使用

    在Go語言中,不僅結(jié)構(gòu)體與結(jié)構(gòu)體之間可以嵌套,接口與接口間也可以通過嵌套創(chuàng)造出新的接口,本文主要介紹了Go語言接口的嵌套的具體使用,感興趣的可以了解一下
    2023-04-04
  • Golang實現(xiàn)四層負載均衡的示例代碼

    Golang實現(xiàn)四層負載均衡的示例代碼

    做開發(fā)的同學(xué)應(yīng)該經(jīng)常聽到過負載均衡的概念,今天我們就來實現(xiàn)一個乞丐版的四層負載均衡,并用它對mysql進行負載均衡測試,感興趣的可以了解一下
    2023-07-07
  • 使用go語言將單反斜杠改為雙反斜杠的方法

    使用go語言將單反斜杠改為雙反斜杠的方法

    最近開發(fā)的時候遇到這么個問題,就是在window上獲取了文件目錄的字段,然后將這個絕對路徑保存到數(shù)據(jù)庫,但是前端展示的時候路徑的雙反斜杠變成了單反斜杠,本文給大家介紹了使用go語言將單反斜杠改為雙反斜杠的方法,需要的朋友可以參考下
    2024-01-01
  • Go中Channel發(fā)送和接收操作指南

    Go中Channel發(fā)送和接收操作指南

    在golang中channel屬于較為核心的一個功能,尤其在go協(xié)程中,channel功能尤為重要,下面這篇文章主要給大家介紹了關(guān)于Go中Channel發(fā)送和接收操作的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • go實現(xiàn)整型的二進制轉(zhuǎn)化的方法

    go實現(xiàn)整型的二進制轉(zhuǎn)化的方法

    這篇文章主要介紹了go實現(xiàn)整型的二進制轉(zhuǎn)化的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • golang struct 實現(xiàn) interface的方法

    golang struct 實現(xiàn) interface的方法

    這篇文章主要介紹了golang struct 實現(xiàn) interface的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07

最新評論

年辖:市辖区| 仪征市| 县级市| 浮梁县| 思南县| 祁门县| 深泽县| 二手房| 包头市| 宾川县| 富宁县| 浦县| 鲁山县| 泊头市| 伊通| 夏津县| 天峻县| 达日县| 军事| 阳东县| 惠州市| 建瓯市| 年辖:市辖区| 内丘县| 平顺县| 明水县| 奉节县| 阜平县| 黑龙江省| 竹山县| 金昌市| 株洲市| 建昌县| 鹿泉市| 襄汾县| 高雄市| 泰州市| 宜兰县| 浙江省| 沙田区| 桐梓县|